DROP TABLE book;
#给表中的某一字段添加注释:使用comment属性,comment关键字跟在字段的最后面
CREATE TABLE Book(
B_ID INT COMMENT '图书编号',
B_NAME VARCHAR(20) COMMENT '图书名称',
P_ID INT(20) COMMENT '出版社编号',
B_AUTHOR VARCHAR(20) COMMENT '图书作者',
B_PRICE FLOAT COMMENT '图书价格'
)
#对B_ID、B_NAME进行重命名
ALTER TABLE Book CHANGE B_ID id INT;
ALTER TABLE Book CHANGE B_NAME bookName VARCHAR(20)
#删除指定的表字段
ALTER TABLE Book DROP P_ID;
#修改字段类型的长度
ALTER TABLE Book CHANGE bookName bookName VARCHAR(40);
#对表重命名
RENAME TABLE book TO shu;
#同时添加3条数据
INSERT INTO shu VALUES(1,'java从入门到放弃','老阮',16800),
(2,'MySQL从删库到跑路','老丁',1)
SELECT * FROM shu WHERE id=1
#-----------------------------------数据类型的属性---------------------------------------------
#mysql中常见的数据类型:varchar(n)、float、int(n)、bigint(n)、date、datetime、text
#默认值:DEFAULT ‘默认值’
#非空:NOT NULL,如果某一字段被NOT NULL修饰后,添加数据时,此字段必须填写
#自动增长:auto_increment,尽量作用在int类型字段上
#主键:primary key,不能够重复,一张表中只有一个字段可以作为主键
#唯一键:unique,被unique修饰的数据不能够重复
DROP TABLE students;
CREATE TABLE students(
id BIGINT(20) AUTO_INCREMENT PRIMARY KEY COMMENT '学生编号',
stuName VARCHAR(40) COMMENT '学生姓名',
gender VARCHAR(2) DEFAULT '男' COMMENT '性别',
className VARCHAR(20) NOT NULL COMMENT'班级',
phone VARCHAR(20) UNIQUE COMMENT '手机号码'
)
#此处的delete可以删除整张表,但是删除数据后,自增列不会从1开始
DELETE FROM students WHERE 1=1
#如果要删除一整张表中的数据,使用truncate。使用truncate删除数据后,如果字段时自增的,则重新从1开始
TRUNCATE TABLE students;
#===================================数据类型属性的练习==============================================
(1)创建一张表:users
(2)id(用户编号,BIGINT(20))、username(用户名,varchar(40))、gender(性别,VARCHAR(2))
idcard(身份证号,VARCHAR(20))、javaScore(Java成绩)
(3)给每个字段都添加一个注释
(4)id为主键,自增、不能够为空
username不能够为空
gender给个默认值为女
idcard 唯一、不能够为空
javaScore默认值为0
USE dt55;
CREATE TABLE users(
id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
username VARCHAR(40) NOT NULL COMMENT '用户名',
gender VARCHAR(2) DEFAULT '女' COMMENT '性别',
idcard VARCHAR(20) UNIQUE NOT NULL COMMENT '身份证号',
javaScore FLOAT DEFAULT '0' COMMENT 'java成绩'
)
INSERT INTO users SET username='关雨',gender='男',idcard='110',javaScore=90;
INSERT INTO users SET username='蔡冠鹏',gender='男',idcard='120',javaScore=80;
INSERT INTO users SET username='贺晨',gender='男',idcard='911',javaScore=70;
#----------------------------------排序(order by 字段 降序/升序)---------------------------------------------
#排序时字段类型可以是数值类型(int、float),也可以是varchar类型
#如果varchar类型对应的字段存放的是中文,则不能够排序;但是如果字段值都是英文,可以排序
#降序(DESC:)
SELECT * FROM users ORDER BY javaScore DESC;
SELECT * FROM users ORDER BY idcard DESC;
SELECT * FROM users ORDER BY username DESC;
#升序(ASC)
SELECT * FROM users ORDER BY javaScore ASC;
#------------------------------聚合函数-----------------------------------
#在mysql中函数使用select关键字调用:select 函数名(字段) 【FROM 表名】
#找出最大值:max(字段名)
#找出users表中javaScore的最高分
SELECT MAX(javaScore) AS 最高分 FROM users;
#找出最小值:min(字段名)
#找出users表中javaScore的最低分
SELECT MIN(javaScore) AS 最低分 FROM users;
#求平均数:avg(字段名)
SELECT AVG(javaScore) AS 平均分 FROM users;
#求和:
SELECT SUM(javaScore) AS 总分数 FROM users;
#统计记录:count(字段名)
#count(字段名):如果字段的值为NULL,则此字段对应的数据条数不再统计之内
#为了解决上述问题,在统计某一张表中的所有数据记录时,最好使用count(*)
SELECT COUNT(*) AS 总条数 FROM users;
#--------------------------------------常用函数---------------------------------------------
#-------时间函数---------------
#NOW():获取当前系统时间,时间格式包括年月日时分秒
SELECT NOW() AS 当前系统时间;
#CURTIME():只获取系统的时分秒
SELECT CURTIME();
#CURDATE():只获取系统的年月日
SELECT CURDATE();
#----------数学函数-------------------
#向上取舍:
SELECT CEIL(2.3)
#向下取舍:floor(数值)
SELECT FLOOR(2.3)
#随机数:rand():不用接受参数,返回的是0-1之间的小数
SELECT RAND()
#获取一个随机的4位数字,没有小数
SELECT CEIL(RAND()*10000)
#---------------------------------同时查询多条记录---------------------------------------
#获取id=1或者id=2或者id=4
SELECT * FROM users WHERE id=1 OR id=2 OR id=4
#in(数据1,数据2...):判断表中某一个字段是否在in后面的参数列表之中
SELECT * FROM users WHERE id IN(1,2,4)
SELECT * FROM users WHERE id NOT IN(2,3) ORDER BY javaScore ASC;
#----------------------------------分组查询(group by 分类字段)--------------------------------------
CREATE TABLE godds(
id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
goodName VARCHAR(40) COMMENT '商品名称',
goodCategory VARCHAR(20) COMMENT '商品种类'
)
RENAME TABLE godds TO goods
#查询goods表中商品的种类
SELECT goodCategory FROM goods GROUP BY goodCategory
#查询goods表中是否有种类为衣服的类型
#注意点:如果一个查询语句中使用了group by,则后面的条件需要使用having关键字
SELECT goodCategory FROM goods GROUP BY goodCategory HAVING goodCategory='数码'
#----------------------------------分页(limit 起始下标,每页显示的数据量)--------------------------------------------
#goods表中有7条数据记录,每页显示3条,总共可以分3页
#获取第一页数据
SELECT * FROM goods LIMIT 0,3;
#获取第二页数据
SELECT *FROM goods LIMIT 3,3;
#获取第三页的数据
SELECT * FROM goods LIMIT 6,3;
SELECT * FROM goods LIMIT (pageNo-1)*pageSize,pageSize;