MySQL基本语句及操作

    xiaoxiao2024-11-22  75

    MySQL语句

    1、查看数据库(三种方法)

    1.1、登录数据库直接查看

    [root@localhost ~]# mysql -uroot -p123456 mysql> show databases;

    数据库解释:

     1:information_schema这个数据库保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型,访问权限等。 [ˈskimə]  元数据(描述数据的数据)

     2:performance_schema 这是MySQL5.5新增的一个性能优化的引擎:命名PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。MySQL用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表

     3:mysql库是系统库,里面保存有账户信息,权限信息等。

     4:mysql5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息,元数据是关于数据信息的数据,如数据库名或表名,列的数据类型,或访问权限等。

     

    1.2、以行的方式显示数据库,添加\G 参数;

    mysql> show databases\G;

    1.3、在shell环境下查看数据库

    使用 mysql -e 命令,后面再跟上SQL语句

    [root@localhost ~]# mysql -e "show databases" -uroot -p123456

    #这种方式使用的是非交互式模式登录mysql查看数据库

     

    2、创建数据库

    语法:create database 数据库名;

     

    2.1、创建数据库注意事项:

    1)、创建数据库时,数据库是以目录的存储方式表示数据库。所以在创建数据库时,不能有一些特殊字符。如果非要加上特殊字符的话,需要在数据库名前后加上反撇符号 " ` ` "

    2)、数据库名不能超过64个字符

    3)、数据库不能重名,必须是唯一的

     

    2.2、创建一个数据库

    mysql> create database db1; #正常创建的数据库 mysql> create database `db-2`; #创建带有特殊字符的数据库 mysql> create database db2 default character set[=]utf8; #创建数据库时,添加默认的字符集(创建数据库时,建议这么创建)

    2.3、选择要操作的数据库

    mysql> use db1;

    2.4、查看处于哪个数据库下

    mysql> select database();

    2.5、在命令行选择默认要进入的数据库

    [root@localhost ~]# mysql -uroot -p123456 db1 mysql> select now(),user(),database(); #now显示当前时间,user显示当前登录mysql的用户,database显示当前数据库;

    2.6、删除数据库

    mysql> drop database `db-2`;

     

    2.7、移动数据库目录

    #删除数据库有些时候不太安全,如果想要恢复的话会非常麻烦,但可以通过移动数据库目录的方式把数据库移动到别的目录,这样以后想要恢复的话,可以直接从目录下恢复回来。

    [root@localhost ~]# mv /data/mysql/data/db1/ /tmp/ #把db1数据库移动到tmp目录

     

    2.8、使用 if exists(如果存在) 子句避免删除和创建数据库时出现的MySQL错误信息

    例如:mysql> drop database if exists `db-2`;           //如果db-2数据库存在则删除,不存在则不删除

     

    以上是删除数据库,还有创建数据库的时候使用的是 if not exists(如果不存在)

    例如:mysql> create database if not exists db1;       //如果db1数据库不存在,则创建,否则不创建

     

     

    3、关于表的操作

    3.1、创建表 create

    语法:create table 数据库名.表名 (字段名(类型),字段名(类型)....);

    例如:mysql> create table db1.t1 (id int,name varchar(10),age int,sex char(1));       //在db1数据库下创建一个 t1 表。

     

    3.2、查看表信息

    mysql> use db1; #进入数据库 mysql> show tables; #查看表信息

     

    3.3、查看表结构

    mysql> desc db1.t1; #查看db1数据库的 t1表结构;

     

    还可以用其他命令查看表结构

    mysql> explain mysql.user; mysql> show columns from mysql.user; mysql> show fields from mysql.user;

    以上三种方法基本相似;

    mysql> show columns from mysql.user like '%user';

    #这种方式查看表结构,是以一种过滤的方式查看,以user结尾的行。

     

     

    3.4、查看创建表时,执行了哪些命令

    例如:

    mysql> show create table db1.t1\G;    #查看创建表t1时,执行了哪些命令,以行的的方式查看;

     

     

    3.5、创建表时指定默认的存储引擎和默认的字符集

    mysql> create table db1.t2(id int(20),name char(10),age int) engine=innodb default charset=utf8;

     

    3.6、删除表

    mysql> drop table db1.t2; #删除db1数据库下的 t2表

     

    3.7、禁止预读信息

    #在数据库内进行一些操作时,一般会弹出一些提示信息,如果不想要这些提示信息,可以在登录数据库时添加 -A参数禁止。

    例如:

     [root@cong11 ~]# mysql -uroot -p123456 -A

     

    3.8、修改表名称

    语法:alter table 表名 rename 新表名

    例如:

    mysql> alter table db1.t1 rename tt1; #修改db1数据库下的t1表改为tt2; mysql> show tables from db1; #修改完后查看

     

     

    3.9、修改表中的字段类型

    语法:alter table 表名 modify 要修改的字段名 要修改的类型;

    例如:先查看表结构

     

    mysql> alter table db1.tt1 modify name varchar(15); #修改name字段的类型 为varchar(15)

     

     

    3.8、修改表中的字段类型和字段名称

    语法:alter table 表名 change 原字段名 新字段名 新字段类型;

    例如:

    mysql> alter table db1.tt1 change name stname varchar(20);  #修改db1数据库下 tt1 表的name字段修改为 stname 字段类型修改为 varchar(20);

     

    注意:change 和 modify 的区别

    change 对列进行重命名和更改列的类型。modify 可以改变列的类型,但不可以改变列的名称。

     

    3.9、在表中添加字段

    语法:alter table 表名 add 字段名 字段类型;

    例如:

    mysql> alter table db1.tt1 add year date; #添加一个 year字段 类型为data,到db1数据库的tt1表下

     

     

    3.10、在表中指定位置添加字段

    #在第一列添加一个字段 first参数;

    mysql> alter table db1.tt1 add aaa int first;    #在第一列添加一个aaa字段,类型为int;

     

     

    3.11、在age后面添加一个字段 使用after参数

    mysql> alter table db1.tt1 add address varchar(40) after age;    #在age后面添加一个address字段,类型为varchar;

     

     

    3.12、删除表中字段

    语法:alter table 表名 drop 字段名;

    例如:

    mysql> alter table db1.tt1 drop year; #删除表中year字段;

     

     

    4、关于表记录的操作(对表中数据进行操作)

    4.1、插入字段<记录> insert

    语法: insert into 数据库名.表名(字段1,字段2,字段3) values(字段值1,字段值2,字段3);

    插入记录时要对应字段类型

    例如:

    mysql> insert into db1.tt1(id,stname,age,sex) values(1,'zhangsan',18,'m');

     

     

    4.2、同时插入多条数据

    例如:

    mysql> insert into db1.tt1(id,stname,age,sex) values(2,'lisi',19,'m'),(3,'wangwu',20,'w');

     

     

    4.3、给不同列分开插入数据

    例如:

    mysql> insert into db1.tt1(id,stname) values(4,'zhaoliu');

     

     

    4.4、查看表中记录 select

    语法:select 列名(*) from 表名称; # *号表示查询表中所有列(字段)的值;

    mysql> select * from db1.tt1; #查询表中所有记录

     

    当表记录比较多时,可以使用\G查看;

    mysql> select * from db1.tt1\G;

     

    4.5、只查询表中某个字段的内容

    mysql> select stname from db1.tt1; #查询name字段的内容

     

     

    4.6、查看别的数据库的表或者不在本数据库上进行查看

    语法:select 字段 from 数据库名.表名;

     

     

    4.7、删除表中的记录 delete参数

    例如:

    mysql> delete from db1.tt1 where age is null;      #删除age为空的行

     

    发现少了zhaoliu 这一行;

     

    4.71、删除整个表记录

    mysql> delete from db1.tt2;       #删除db1数据库下tt2表的所有记录(数据)

     

    4.8、更新记录 update参数

    mysql> update db1.tt1 set age=25 where id=2;       #把id=2 的age字段 更新为25;

     

     

    4.8.1、更新多条记录,使用,隔开

    mysql> update db1.tt1 set id=6,stname='liuliuliu' where age=18;     #把 age=18的 id和stname的值更新

     

     

    4.9、去重复查询 distinct参数

    语法:select distinct 列名 from 数据库.表名;

     

    4.10、使用and和or 进行多条件查询

    mysql> select * from db1.tt1 where id>1 and age>19;    #查询表中 id>1 和 age>19 的记录;

     

    mysql> select * from db1.tt1 where id=2 or stname='zhangsan';       #查询表中 id=2 或 stname='zhangsan' 的记录;

     

     

    4.11、MySQL区分大小写查询 binary(二进制)

    mysql默认查询是不区分大小写的

    binary 是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写

     

    插入两条数据

    mysql> insert db1.tt1(id,stname,age,sex) values(7,'KILL',32,'m'),(8,'kill',33,'w');

    查询数据

    mysql> select * from db1.tt1 where stname='kill';

     

    这时候是不区分大小写的;

     

    mysql> select * from db1.tt1 where binary stname='kill'; #再次查看,加入binary参数

    mysql> select * from db1.tt1 where binary stname='KILL'; #查看大写

     

    4.12、MySQL查询排序 order by 参数

    语法:select [distinct] 字段1,字段2 from 数据库名.表名 order by 字段名 升序(asc)/降序(desc);

     

    例如:

    mysql> select * from db1.tt1 order by age; #查看age字段的排序(默认为升序,从小到大)

     

    mysql> select * from db1.tt1 order by age desc; #降序操作

     

    4.13、关于MySQL命令帮助

    help 会告诉我们很多使用方法和信息

    使用方法:

    mysql> help show; mysql> help select;

     

     

     

     

     

     

     

    最新回复(0)