MYSQL数据库操作

创建数据库

CREATE DATABASE demo_lhm
USE demo_lhm

删除数据库

drop database demo_lhm

数据库定义语言

创建表

creat table 表名(
     列名 数据类型 
)

CHAR(10)表示定长,长度固定,不够则用空格补位 VARCHAR(10)表示变长,即长度可变,小于十个字符即可

实体完整性:

 PRIMARY KEY 主键,

域完整性:

   NOT NULL 不能为空的约束
   UNIQUE 满足唯一性
   DEFAULT '男' 默认为男
   AUTO_INCREMENT 自增长 

引用完整性:

   REFERENCES 表名(c_id) 给学生表增加外键,外键一般和约束同时使用
   CONSTRAINT FOREIGN KEY(当前表的外键名) REFERENCES 表名(主键名)    添加外键约束

创建学生表

CREATE TABLE t_student(
  s_id INT PRIMARY KEY AUTO_INCREMENT,
  s_name VARCHAR(10) NOT NULL,
  s_sex VARCHAR(2) DEFAULT '男' ,
  s_phone INT UNIQUE,
  s_cid INT,
  CONSTRAINT FOREIGN KEY(s_cid) REFERENCES t_class(c_id)
)

创建班级表(主表)

CREATE TABLE t_class(
  c_id INT PRIMARY KEY AUTO_INCREMENT,
  c_name VARCHAR(20) 
)

数据库操作语言

增加一个成绩的列,数据类型为int

ALTER TABLE t_student ADD s_grade INT

修改某一列
ALTER TABLE 表名 CHANGE 原列名 新列名 数据类型

ALTER TABLE t_student CHANGE s_grade s_addrss VARCHAR(10)

删除某一列

ALTER TABLE t_student DROP s_addrss

添加数据

INSERT INTO t_student (s_name,s_sex,s_phone)VALUE('王五','女',321)

INSERT INTO t_student VALUE(NULL,'六四','女',4326,2),
(NULL,'s是','女',324,1),
(NULL,'六四','女',241,2)

添加默认项

INSERT INTO t_student VALUE(NULL,'wehddi',DEFAULT,134,1)

修改所有数据

UPDATE t_student SET s_name='六四'

有筛选的修改数据

UPDATE t_student SET s_name='张三' WHERE s_sex='男'

删除所有数据

DELETE FROM t_student 

有筛选的删除数据

DELETE FROM t_student WHERE s_phone=241

清空所有数据

TRUNCATE TABLE t_student

备份当前修改完成的表到新的表

CREATE TABLE 新表名 LIKE  当前表名;
INSERT INTO 新表名 SELECT * FROM 当前表名

creat table 新表名 select * from 当前表名

查询所有

SELECT * FROM 表名

查询某些信息

SELECT stud_name,stud_phone FROM students

有筛选的查询

SELECT * FROM students WHERE stud_age>23 AND stud_sex='男'
SELECT * FROM students WHERE stud_age>23 OR stud_education='大专'
SELECT * FROM students WHERE stud_age NOT IN (22,23)

模糊查询

%: 表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,使用两个百分号(%%)表示。

_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句

[ ]: 表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
如果 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”

[^ ] : 表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

表的前缀,当同时查询2个表的时候使用

SELECT t1.stud_name AS '学生姓名',t1.stud_phone AS '学生电话' FROM students t1 WHERE stud_id=2

计算值

SELECT stud_name,stud_age+10 AS '学生年龄+10' FROM students

查询所有不重复的学生性别
DISTINCT 排除重复数据,当一行的数据的某一列不一样时,也不会被排除

SELECT DISTINCT stud_sex FROM students

查询没有入学日期的人

SELECT * FROM students WHERE stud_birthday IS NULL

顺序排列,默认是升序

SELECT stud_name,stud_age FROM students ORDER BY stud_age DESC  降序
SELECT stud_name,stud_age FROM students ORDER BY stud_age ASC  升序

查询年龄最大的五位学生的信息

SELECT * FROM students ORDER BY stud_age DESC LIMIT 5

LIMIT 2,3 第一个数字代表从第几条开始(从0开始),第二个数字代表返回多少条数据

SELECT * FROM students ORDER BY stud_age DESC LIMIT 2,3

查询年龄最大的两个男生

SELECT * FROM students WHERE stud_sex='男' ORDER BY stud_age DESC LIMIT 2

查询从第三条数据开始,到第10条数据结束的记录,要求商品单价大于100 或者销售数量大于50

SELECT * FROM  (SELECT * FROM  sales LIMIT 2,8) result WHERE result.xs_sale>100 OR result.xs_count>50

聚合函数:

查询一共多少学生

SELECT COUNT(*) AS '学生人数' FROM students

查询年龄最大的学生

SELECT MAX(stud_age) AS '最大年龄' FROM students

查询年龄最小的学生是谁

SELECT stud_name FROM students WHERE stud_age=(SELECT MIN(stud_age) FROM students) 

所有学生年龄的总和

SELECT SUM(stud_age) FROM students

所有学生年龄的平均值

SELECT AVG(stud_age) FROM students
SELECT AVG(IFNULL(stud_age,0)) FROM students
SELECT SUM(stud_age)/COUNT(*) FROM students

查询每个学历的人数
当进行分组时,投影列一定是聚合函数列和分组列

SELECT COUNT(*) ,stud_education  FROM students GROUP BY stud_education

查询每个学历的男生人数

SELECT COUNT(*) ,stud_education  FROM students WHERE stud_sex='男' GROUP BY stud_education

查询男生数量大于1的学历并且升序排列

SELECT COUNT(*) AS 'stunum' ,stud_education   -- 4
FROM students                -- 1
WHERE stud_sex='男'          -- 2
GROUP BY stud_education      -- 3
HAVING stunum>1              -- 5
ORDER BY stunum ASC          -- 6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值