mysql基本命令语句

创建数据库

方法1:直接创建

CREATE DATABASE myDB;

方法2:在创建之前判断有无该数据库,有就删除,否则将不采取任何操作

CREATE DATABASE IF NOT EXISTS myDB;

使用数据库进行操作

USE myDB;

创建表

CREATE TABLE 表名(
	列名 列的数据类型  ?(约束) 约束可写可不写
) 

知识扩展:
1、列的数据类型:varcharintcharfloatdatedatetime等等
这里需要注意date和datetime格式的区别:
时间 date(yyyy-mm-dd) datetime yyyy-mm-dd hh:mm:ss

2、主键约束:primary key 使用这个之前,需先写数据类型,可以是数字int,也可以是字符串类的,但是数字常用
id INT PRIMARY KEY

3、自动增长:1、要是主键,2、一般为数字,
id INT PRIMARY KEY AUTO_INCREMENT

4、表名命名规则,mysql中不区分大小写,一般为划线连接,如表名:t_student

外键约束

语法:CONSTRAINT FOREIGN KEY(从表的列名) REFERENCES 主表表名(主表的列名)

-- 以下表为从表
CREATE TABLE t_user(
	u_id INT PRIMARY KEY AUTO_INCREMENT,
  u_name VARCHAR(6) NOT NULL,
	u_age INT,
	u_sex CHAR(1) DEFAULT '男',
	u_tel CHAR(11) UNIQUE,
	u_j_id INT,
	CONSTRAINT FOREIGN KEY(u_j_id) REFERENCES t_job(j_id)
);
-- 以下表为主表
CREATE TABLE t_job(
	j_id INT PRIMARY KEY AUTO_INCREMENT,
	j_name VARCHAR(16) NOT NULL UNIQUE
)

注意事项:
什么是外键约束:外键约束,这个外键约束了另外一张表的主键,因为外键的存在,所有与另外一张表产生关系。
1、创表的时候先创主表再创从表,删表时候,先删从表再删主表,加数据时候,先加主表的数据,再加从表的数据。
删除从表某一项数据的时候需要先暂时接触外键约束,删除,再重新建立约束
如:

 SET FOREIGN_KEY_CHECKS = 0;
 DELETE FROM shop_yw WHERE yw_name='张三';
 SET FOREIGN_KEY_CHECKS = 1;

2、主表的外键和从表的外键数据类型到一致,不能一个int一个varchar
3、主表的外键必须是主键

插入数据

插入数据的方式有三种方法:
1、INSERT INTO 表名(列名,列名,列名...) VALUES(值,值,值....);可选择添加数据,列名与数据要一一对应
2、INSERT INTO 表名 VALUES(值,值,.....);必须对应列名顺序,必须全部添加
3、INSERT INTO 表名 VALUES (值,值,...) ,(),();使用插入多条数据的时候

表数据的删除

1、DELETE from 表名 这么删相当于把整个表的所有数据都删了
2、DELETE from 表名 WHERE u_id=5;根据条件去选择某一行去删除
注意事项:删除方法除了delete from还有TRUNCATE TABLE 表名
两者区别:
DELETE from 表名
这种删除实际只是假删,是有记录的,可以恢复的,就如id,你根据这个id删除了,你再往表里加入数据,却不是从删除的id开始的。
清空表常用:清空表常用 TRUNCATE注意两者的区别

修改表

UPDATE 表名 set 列名 = 值会把某一列全部修改为某个值
UPDATE 表名 set 列名 = 值 WHERE u_id=1 根据条件去指定修改某一行的数据

查询

简单查询
SELECT 列名(字段),列名()字段 from 表名

SELECT u_name FROM t_user
SELECT * FROM t_user;

条件查询

SELECT * FROM t_user WHERE u_id=1;

查询后取别名

SELECT u_name AS '名字' , u_age AS '年龄' FROM t_user;

AS熟悉后是可以直接省略不写的

范围查询
> >= < <= = != or in between..and

SELECT * FROM t_user WHERE u_age>18;
SELECT * FROM t_user WHERE u_age>=18;
SELECT * FROM t_user WHERE u_age<18;
SELECT * FROM t_user WHERE u_age<=18;
SELECT * FROM t_user WHERE u_age=18;
SELECT * FROM t_user WHERE u_age!=18;
-- 或
SELECT * FROM t_user WHERE u_age=18 OR u_age =20;
SELECT * FROM t_user WHERE u_age IN (18,20); -- 满足18岁或者20岁的

-- 和
SELECT * FROM t_user WHERE u_age=18 AND u_age =20; -- 即满足18岁又满足20岁的

-- 范围
SELECT * FROM t_user WHERE u_age>=18 AND u_age <=20;
SELECT * FROM t_user WHERE u_age BETWEEN 18 AND 20; -- 前后都包括  等同上面那句话

模糊查询
%任意长度的字符 _单个长度的字符 like

-- 开头是“老”字(长度不限)
SELECT * FROM t_user WHERE u_name like '老%';
-- 中间是“老”字(长度不限)
SELECT * FROM t_user WHERE u_name like '%王%';

-- 开头是“老”字(长度限两位)
SELECT * FROM t_user WHERE u_name like '老_';
-- 中间是“老”字(长度限三位)
SELECT * FROM t_user WHERE u_name like '_老_';

查询去重
DISTINCT

SELECT DISTINCT sage from t_student -- 年龄重复的去除

查询后返回指定条数
LIMIT

SELECT * FROM t_student LIMIT 0,2 -- 0 意思就是从第一条数据开始,取两条 

子查询

首先要知道:SELECT 列名(字段),列名()字段 from 表名

select里的子查询

SELECT s_name,(
	SELECT s_class_id
	FROM t_class AS t2
	WHERE t1.s_class_id = t2.c_id
)
FROM t_student

from里的子查询

SELECT *
FROM(
	SELECT * FROM t_student LIMIT 0,5
) AS t1
where u_age>18
-- 先从学生表中取出前五条数据,再从这五条数据中查出年龄满足大于18岁的所有学生信息。
-- 注:from的子查询后必须重新取别名,别名可以任意取。

where里的子查询

SELECT *
FROM t_student
WHERE s_class_id = (
		SELECT c_id
		FROM t_class
		WHERE c_name='班级1'
)
-- 查出学生表中,所有班级名称为“班级1”的所有学生信息   

聚合函数

1、统计数量 COUNT(*)

SELECT COUNT(*) FROM t_student; -- 查询出学生表中有多少条学生数据

2、平均值 AVG(u_age )

SELECT AVG(u_age ) FROM t_student; -- 查询出学生表中学生的平均年龄是多少

3、最小值MIN(u_age )

SELECT MIN(u_age ) FROM t_student; -- 查询出学生表中学生的最小年龄是多少

4、最大值 MAX(u_age )

SELECT MAX(u_age ) FROM t_student; -- 查询出学生表中学生的最大年龄是多少

5、求和SUM(u_age )

SELECT SUM(u_age ) FROM t_student; -- 查询出学生表中学生的年龄总和是多少

6、按什么排序ORDER BY u_age默认从小到大排序,若从大到小排序:ORDER BY u_age DESC

SELECT * FROM t_student; ORDER BY u_age -- 查询出学生表中所有的学生信息,按学生的年龄升序排列
SELECT * FROM t_student; ORDER BY u_age DESC -- 查询出学生表中所有的学生信息,按学生的年龄降序排列

7、按什么分组GROUP BY u_age

SELECT u_ssex FROM t_student GROUP BY u_ssex; -- 查询出来后按性别进行分组,一般配合count等使用

8、分组统计后的筛选HAVING

 SELECT u_ssex,COUNT(ssex) FROM t_student GROUP BY u_ssex HAVING COUNT(u_ssex)>3;
 -- 

表链接(不全,待补充)

左链接
保全左边的数据,用左链接

SELECT *
FROM t_a LEFT JOIN t_b ON  t_a.a_b_id = t_b.b_id;

右链接
保全右边数据,用右链接

SELECT *
FROM t_a RIGHT JOIN t_b ON  t_a.a_b_id = t_b.b_id;

全链接
保全两边的数据

SELECT *
FROM c_table JOIN s_table 
WHERE c_table.c_id = s_table.s_id;

自链接

备份表

create table 备份表表名 select * from 要备份的表名

create table new_stu_table 
select  * from stu_table

查看所有数据库

show DATABASES

执行顺序

FROM>WHERE>SELECT>GROUP BY>COUNT()>HAVING>ORDER BY

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨不旧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值