本博客记录了MySQL的几种最基础的语法,包含了创建数据库、创建表语法,以及数据类型
和数据库的增删改查语法,还有表关联查询,子查询。
1、创建数据库:create database +数据库名
其中:charset utf8 是设置编码格式
CREATE DATABASE db_test DEFAULT CHARSET utf8;
2、使用数据库: use +数据库名
use db_test;
3、创建表: create table +表名
nou null:不能为空
unique:唯一
CREATE TABLE student (
id INT PRIMARY KEY NOT NULL ,
NAME VARCHAR(20) NOT NULL
);
4、常见的数据类型:
number类型:
TINYINT(size) | -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。 |
SMALLINT(size) | -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。 |
MEDIUMINT(size) | -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。 |
INT(size) | -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。 |
BIGINT(size) | -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。 |
FLOAT(size,d) | 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。 |
Character 字符串:
char(n) | 固定长度的字符串。最多 8,000 个字符。 | n |
varchar(n) | 可变长度的字符串。最多 8,000 个字符。 | |
varchar(max) | 可变长度的字符串。最多 1,073,741,824 个字符。 | |
text | 可变长度的字符串。最多 2GB 字符数据。 |
Date类型:
DATE() | 日期。格式:YYYY-MM-DD 注释:支持的范围是从 '1000-01-01' 到 '9999-12-31' |
DATETIME() | *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' |
TIMESTAMP() | *时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC |
TIME() | 时间。格式:HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59' |
YEAR() | 2 位或 4 位格式的年。 注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。 |
5、增删改查语句
新增 | 删除 | 修改 | 查询 |
insert | delete | update | select |
新增数据:insert
INSERT INTO student(id,name) VALUES(1,'zhangsan');
INSERT INTO student(id,name) VALUES(2,'lisi');
删除:delete
delete from student where name='zhangsan';
修改:update
update student set name='张三' where name='zhangsan';
查询:select
select * from student;
6、表关联查询
内连接 inner join
左连接 left join
右连接 right join
实例:
6.1、创建数据库
6.1.1、学生表
CREATE TABLE student (
id INT(10) NOT NULL UNIQUE PRIMARY KEY ,
NAME VARCHAR(20) NOT NULL ,
sex VARCHAR(4) ,
birth YEAR,
department VARCHAR(20) ,
address VARCHAR(50)
);
6.1.2、分数表
CREATE TABLE score (
id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT ,
stu_id INT(10) NOT NULL ,
c_name VARCHAR(20) ,
grade INT(10)
);
6.2、插入数据
6.2.1、插入学生表数据
INSERT INTO student VALUES( 901,'张三', '男',1990,'中文系', '湖南省永州市');
INSERT INTO student VALUES( 902,'李四', '男',1990,'英语系', '辽宁省阜新市');
INSERT INTO student VALUES( 903,'王五', '女',1991,'英语系', '福建省厦门市');
6.2.2、插入分数表数据
INSERT INTO score VALUES(NULL,901, '计算机',98);
INSERT INTO score VALUES(NULL,902, '计算机',65);
INSERT INTO score VALUES(NULL,903, '计算机',70);
6.3、内连接 inner join
SELECT st.*,sc.* FROM student st
INNER JOIN
score sc ON st.id = sc.stu_id
6.4、左关联查询
SELECT st.*,sc.* FROM student st
LEFT JOIN
score sc ON st.id = sc.stu_id;
6.5、右关联查询
SELECT st.*,sc.* FROM student st
RIGHT JOIN
score sc ON st.id = sc.stu_id
7、子查询
7.1 创建表
CREATE TABLE emp(
empno INT NOT NULL,
ename VARCHAR(20) NOT NULL,
job VARCHAR(20),
mgr INT,
salary DOUBLE
);
7.2 插入数据
INSERT INTO emp VALUE(1001,'张三','文员',1013,8000.00);
INSERT INTO emp VALUE(1002,'李四','销售员',1006,16000.00);
INSERT INTO emp VALUE(1003,'王五','销售员',1006,12500.00);
7.3 查询工资大于王五的
SELECT * FROM emp WHERE salary >
(SELECT salary FROM emp WHERE ename = '王五')