mysql


mysql数据库温习

mysql数据库

数据库基本操作

mysql登陆与退出

登录:mysql -u用户名 -p密码 -h地址

三种退出方法:

  1. exit;
  2. quit;
  3. \q;

mysql的一些解释

数据库相当于文件夹,表相当于文件

mysql三种注释符

  1. – (减减空格)
  2. /* */

数据库的增删改查

增:create database db1;

删:drop database db1;

改:alter database db1 charset utf8

查:show databases;#查看所有的数据库

show create database db1;查看指定的数据库

设置默认的utf8,在配置文件中:写上character_set_server = utf8

use db2

select database() #查看你当前在哪个文件夹

重命名数据库 RENAME database olddbname TO newdbname

show status; – 显示一些系统特定资源的信息,例如,正在运行的线程数量。

desc tabl_name; 显示表结构,字段类型,主键,是否为空等属性,但不显示外键。

show databases 查看这个mysql里面有多少个库

use 选择数据库

show tables 查看当前库里面所有的表

mysql> select password from user where user=’root’;

Mysql 5.7 select authentication_string,user from mysql.user;

查看当前数据库 里面的表user 用户为root的密码

alter database 数据库名 character set utf8;

表的操作

查看表结构

desc table

DESCRIBE 表名;

查看表内容

select *from table_name;

建立表

CREATE TABLE 表名 (

​ 属性名 数据类型 [完整约束条件],

​ 属性名 数据类型 [完整约束条件],

​ …

​ …

​ 属性名 数据类型 [完整约束条件]

​ );

一个例子:

create table users(id int(7) UNSIGNED auto_increment,username varchar(30) not null,password varchar(32) not null,email varchar(40),primary key (id))engine=myisam default charset=utf8;

ENGINE=InnoDB DEFAULT CHARSET=utf8;

ENGINE 设置表的引擎 和默认的字符类型

常见的数据库引擎

InnoDB、 myisam

数据类型:

约束条件

PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组

FOREIGN KEY 标识该属性为该表的外键,是与之联系某表的主键

NOT NULL 标识该属性不能为空

UNIQUE 标识该属性的值是唯一的

AUTO_INCREMENT 标识该属性的值是自动增加,这是MySQL的SQL语句的特色

DEFAULT 为该属性设置默认值

修改表

  • 改表名

    ​ 格式:ALTER TABLE 旧表名 RENAME 新表名;

  • 修改字段的数据类型

    ​ ALTER TABLE 表名 MODIFY 属性名 数据类型;

  • 修改字段名:

    ​ ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;

  • 增加字段名

    ​ ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];

  • 删除字段

    ​ ALTER TABLE 表名 DROP 属性名;

  • 更改表的存储引擎

    ​ ALTER TABLE 表名 ENGINE = 存储引擎名;

数据的增删改查

为表中所有字段添加数据:

语法: insert into 表名 (属性1,属性2,…) values (‘值1’,’值2’,…);

同时添加多条数据:

语法: insert into 表名 (属性1,属性2,…) values (‘值1’,’值2’,…),(‘值1’,’值2’,…);

删除表中某条数据:

语法:delete from 表名 where 条件;

删除全部数据:

语法:delete from 表名

update 表名 set 属性1=值1,属性2=值2 where 条件;

select 字段1,字段2 from 表名 where条件;

  • 查询所有字段:

    select *from users;#*代表所有字段

  • 查询指定字段;

    select username,password from users;

  • in查询:

    select *from users where id in (1,2,8,7);

  • 带 between and 关键字的查询:

    select username from users where id not between 1 and 10;

  • 带distinct关键字的查询:(关键词 DISTINCT 用于返回唯一不同的值)

    select distinct username from users;

  • 带ike关键字的查询:常与%一起使用

    select * from users where username like “%m%” ;

    image-20210712182159272

  • 下划线_匹配一个字符

    select *from users where username like”xiaosha_”;

  • and 查询 满足多个条件

    select * from users where id=1 and username=’xaioshaK’;

  • or查询 满足任一条件

    select * from users where id=1 or username=’xiaoshaK’;

  • OR 和 AND 一起使用的情况

    OR 和 AND 一起使用的时候,AND 的优先级高于 OR,因此二者一起使用时,会先运算 AND 两边的表达式,再运算 OR 两边的表达式。

    select * from users where id >5 and password=’123456c’ or username=’xiaoshaK’;

  • 聚合查询

    COUNT() 返回某列的行数

    SUM() 返回某列值的和

    AVG() 返回某列的平均值

    MAX() 返回某列的最大值

    MIN() 返回某列的最小值

  • 分组查询

    SELECT * FROM users GROUP BY username;

    +—-+———-+———-+

    | id | username | password |

    +—-+———-+———-+

    | 2 | alex1 | 456789 |

    | 1 | moon | 456789 |

    | 3 | moon1 | 123456 |

    +—-+———-+———-+

    3 rows in set (0.01 sec)

  • 使用LIMIT查询

    select * from users limit 2,10;#从第三条开始,取十个

  • 为表和字段取别名

    select * from users as u where u.id=1;

    select username as myname from users;

mysql子查询:

  • where型子查询

    (把内层查询结果当作外层查询的比较条件)

    ​ select * from users where id in (select id from users where id>10);

  • from型子查询

    ​ (把内层的查询结果供外层再次查询)

    ​ select * from (select username,age from users) as agev_a where age>20

    ​ select * from (select * from users where id>=10) as age_10;

    ​ (select * from users where id>=10)查询出来的是一个集合 别名为age_10

    ​ select * from age_10

  • exists型子查询

    ​ (把外层查询结果拿到内层,看内层的查询是否成立)

    1

    0

    select * from users where EXISTS (select * from users where id>1)

联合查询:

默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行

两次查询的列数必须一致

select * from users union select *,1 from news;#都是查询所有列


文章作者: 晓莎K
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 晓莎K !
评论
  目录