数据库操作:
创建数据库:CREATE DATABASE 数据库名;
判断数据库是否已经存在,不存在则创建数据库:CREATE DATABASE IF NOT EXISTS 数据库名
创建数据库并指定字符集:CREATE DATABASE 数据库名 CHARACTER SET 字符集;
table表操作:
create table user (
Name varchar(20) comment '姓名',-- varchar(20)指长度最大20 comment指代字段说明
age int(3) ,
gander char(1) comment '性别', -- varchar(10)是指最大10,char(10)是固定10
score double(3,1) comment '个人综合评分', -- mysql特有最大值99.9
birthday datetime -- 年月日date 时分秒timestamp 年月日时分秒datetime
); -- 创建表
show tables; -- 查看所有的表
desc user; -- 查看标结构
show create table user; -- 显示创建user的语句
CREATE TABLE user1 LIKE user; -- 创建一张结构相同的表
修改表 alter:
-- 1.添加新字段
alter table user add (no int(2));
-- 2 修改原先字段的类型
alter table user modify Name varchar(10);
-- 3 删除字段
alter table user drop no;
-- 4 修改字段名
alter table user change gander sex char(1);
-- 重命名表
rename table user to user2;
-- 删除表
drop table user2;
DML操作语句:
-- values值的个数和顺序必须跟前面括号中的字段顺序一致
alter table user1 modify gander varchar(4);
insert into user(Name, gander, score) values('lxm','男',99.0);
insert into user values('lxm',null,'1',99,null),
('zdw',null,'1',99.0,null),
('zyd',null,'1',99.0,null),
('cwd',null,'1',99.0,null);
CREATE TABLE user1 LIKE user;
-- 如果只想复制 student 表中 name,age 字段数据到 student2 表中,两张表都写出相应的列名
INSERT INTO user1(Name,age) SELECT Name, age FROM user;
-- 将 student 表中的数据添加到 student2 表中
insert into user1 select * from user;
-- 不带条件修改数据,将所有的性别改成男
update user set gander = '男';
-- 如果update和delete不能执⾏,需要修改数据库安全模式
SET SQL_SAFE_UPDATES = 0;
-- 带条件修改数据,将 score=99 的性别改成男
update user set gander='男' where score=99;
-- 不带条件删除数据
-- DELETE FROM 表名
-- 带条件删除数据,删除 score=100 的记录
delete from user where score=100;
-- 查询所有
select * from user;
-- 查询 user 表中的 name 和 age 列
select Name,age from user;
-- 使⽤别名
select Name as 姓名, age as 年龄 from user;
-- 表使⽤别名
select Name as 姓名, age as 年龄 from user as st;
-- 去掉重复的记录
select distinct Name from user;
-- 给所有的分数加 5 分
select score + 5 from user;
条件查询:
CREATE TABLE student (
id int, -- 编号
name varchar(20), -- 姓名
age int, -- 年龄
sex varchar(5), -- 性别
address varchar(100), -- 地址
math int, -- 数学
english int -- 英语
);
INSERT INTO student (id, NAME, age, sex, address, math, english)
VALUES (1, '⻢云', 55, '男', '杭州' , 66, 78),
(2, '⻢化腾', 45, '⼥', '深圳', 98, 87),
(3, '⻢景涛', 55, '男', '⾹港', 56, 77),
(4, '柳岩', 20, '⼥', '湖南', 76, 65),
(5, '柳⻘', 20, '男', '湖南', 86, NULL),
(6, '刘德华', 57, '男', '⾹港', 99, 99),
(7, '⻢德', 22, '⼥', '⾹港', 99, 99),
(8, '德玛⻄亚', 18, '男', '南京', 56, 65);
-- 查询 math 分数⼤于 80 分的学⽣
select * from student where math > 80;
-- 查询 english 分数⼩于或等于 80 分的学⽣
select * from student where english <= 80;
-- 查询 age 等于 20 岁的学⽣
select * from student where age = 20;
-- 查询 age 不等于 20 岁的学⽣,注:不等于有两种写法
select * from student where age <> 20;
select * from student where age != 20;
-- 查询id是1或3或5的学⽣
select * from student where id in(1, 3, 5);
-- 查询id不是1或3或5的学⽣
select * from student where id not in(1, 3, 5);
-- 查询 english 成绩⼤于等于 75,且⼩于等于 90 的学⽣
select * from student where english between 75 and 90;
-- 查询姓⻢的学⽣
select * from student where name like '⻢%';
select * from student where name like '⻢';-- 无结果
-- 查询姓名中包含'德'字的学⽣
select * from student where name like '%德%';
-- 查询姓⻢,且姓名有两个字的学⽣
select * from student where name like '⻢_';
-- 更新马云的时间
update student set dates=now()where name='马云';