创建表
CREAT TABLE table_name
( field datadype,field datadype
)
1)、character set 字符集 如果未指定则为所在数据库的字符集
2)、collate 校对规则 不指定则为所在数据库的校对规则
3)、engine 引擎
4)、field 指定列名
5)、datatype 指定列类型
列类型(MySQL数据类型)
1)、整形:tinyint(1字节),smallint(2),mediumint(3),int(4), bigint(8)
2)、小数类型:float(单精度,4字节),double(双精度,8字节),decimal【M,D】(大小不确定)【M是小数位数的总数,最大为65如果被省略默认是10,D是小数点后的位数,最大为30,若省略默认为10】
CREATE TABLE T08
(num1 FLOAT,num2 DOUBLE,num3 DECIMAL(30,20));
INSERT INTO t08 VALUES(11.1234678987345,11.1234678987345,11.1234678987345);
SELECT * FROM t08;
3)文本类型(字符串类型):char (0-255), varcher(0~2^16-1), text(0~2^16-1) ,longtext(0~2^32-1)
4)、二进制数据类型:blob(0~2^16-1),longblob(0~2^32-1)
5)、日期类型:date(日期 年月日)time(时间 时分秒) datetime(年月日 时分秒 YYYY-MM-DD HH:MM:SS) timestamp(时间戳)
各种基本语句
insert语句
CREATE TABLE goods (id INT,goods_name VARCHAR(10),price DOUBLE
);
INSERT INTO goods (id ,goods_name,price)VALUES(101,'手机',2000);INSERT INTO goods (id ,goods_name,price)VALUES(102,'电脑',6000);
注意事项:插入的数据应与字段的数据类型相同;数据的长度应在列的规定范围内;字符和日期类型数据应包在单引号中;列可以插入空值,前提是该字段允许为空,INSERT INTO TABLE VALUE(NULL); 如果给表中所有字段添加数据,可以不写前面的字段名称;如果一个列没有指定的NOT NULL, 再添加数据时没有默认值则为null。
update语句
UPDATE goodsSET price =3000WHERE goods_name='手机'
delete语句
DELETE FROM goods where goods_name='手机'
注意事项:delete不能删除某一列的值,可以使用update设为null或者‘’ ;上述语句如果不使用where子句,将删除表中所有数据; 使用delete语句仅删除记录,不删除表本身,删除表则使用(DROP TABLE 表明;)语句
select语句
-- select语句的使用示例
DROP TABLE IF EXISTS db01.student;
CREATE TABLE student(id INT,name VARCHAR(20) ,chinese FLOAT ,english FLOAT ,math FLOAT
);
INSERT INTO student (id,name,chinese,english,math) VALUES (1,'qq',78,57,67);
INSERT INTO student (id,name,chinese,english,math) VALUES (2,'ww',88,88,78);
INSERT INTO student (id,name,chinese,english,math) VALUES (3,'ee',96,89,99);
INSERT INTO student (id,name,chinese,english,math) VALUES (4,'rr',67,97,77);
-- 查询所有学生数据
SELECT*FROM student;
-- 过滤表中重复的数据(所有数据均相同)
SELECT DISTINCT `name`,english FROM student;
-- 使用表达式对查询的列进行运算
-- 统计每个学生总分
SELECT `name`,(chinese+english+math) FROM student;
-- 使用别名表示学生分数
SELECT `name`,(chinese+english+math) AS total FROM student;
-- 查询总分大于230的学生
SELECT * FROM student WHERE (chinese+english+math)>230
-- 查询math大于80Chinese大于90的学生
SELECT * FROM student WHERE math>80 AND chinese>90
-- 查询英语成绩大于语文成绩的学生
SELECT * FROM student WHERE english>chinese
-- 查询总分大于230并且数学小于语文的姓w的学生 w% 表示名字以w开头
SELECT * FROM student WHERE (chinese+english+math)>230 AND math<chinese AND `name` LIKE'w%'
-- 英语成绩在80-90之间的
SELECT * FROM student WHERE english>=80 AND english<=90
SELECT * FROM student WHERE english BETWEEN 80 AND 90 -- BETWEEN - AND 时闭区间
-- 数学成绩排序后输出
SELECT * FROM student ORDER BY math DESC;
Order by语句 指定排序的列,排序的列既可以是表中的列名也可以是select语句后指定的列名(Asc默认升序Desc默认降序),位于select语句的结尾