版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://cloud.tencent.com/developer/article/1535456
今天一大早,五点就醒了,没事干就赶紧把数据库入门的课看了几十分钟 ,敲了敲,果然就困了 倒床上直接睡到了十一点半。
这就不多说了,网上一大片。
记住本地ip 127.0.0.1 localhost也行 mysql默认端口3306 账户默认 root 密码root
mysql -u用户 -p密码 (u和p后面都没有空格哦!!!!!) mysql -hIP地址 -u用户 -p密码 (u和p后面都没有空格哦!!!!!) mysql --host=IP地址 -u用户 -p密码 (u和p后面都没有空格哦!!!!!) 退出exit或quit
什么是SQL? Structured Query Language 结构化查询语言 SQL作用 1) 是一种所有关系型数据库的查询规范,不同的数据库都支持。 2) 通用的数据库操作语言,可以用在不同的数据库中。 3) 不同的数据库 SQL 语句有一些区别 SQL语句分类 1) Data Definition Language (DDL 数据定义语言) 如:建库,建表 2) Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改 3) Data Query Language(DQL 数据查询语言),如:对表中的查询操作 4) Data Control Language(DCL 数据控制语言),如:对用户权限的设置
3.1创建数据库
create database 数据库名字; create database if not exists 数据库名字; create database 数据库名字 character set 字符集;
所有语句都是;分号结尾不能忘
字符集 utf-8 没有-直接utf8;
3.2查看创建的数据库
查看所有的额 show create databases; -- 查看某个数据库的定义信息 show create database db3; show create database db1;
3.3修改数据库字符集
alter database db3 character set utf8;
3.4删除数据库
drop database db2;
3.5使用数据库
查看正在使用中的数据库 select database(); 使用或切换数据库 use 数据库名;
3.6创建表
create table 表名( 字段名 字段类型; 字段名 字段类型; ......... );
mysql常用类型
int double varchar date
create table student ( id int, -- 整数 name varchar(20), -- 字符串 birthday date -- 生日, 最后没有逗号 );
4查看表
查看所有表 show tables; 查看表结构 desc 表名; 查看创建表的SQL语句 show create table 表名;
5快速创建一个相同的表
create table 新表 like 旧表;
6删除表
drop table 表名; 判断存在,再删除 drop table if exists 表名
7修改表结构
添加表列 alter table 表名 add 列名 类型 ; 修改表类型 alter table 表名 modify 列名 新的类型; alter table 表名change 旧列名 新列名 新类型; 删除列 alter table 表名 drop 列名; 修改表名 alter table 表名 to 新表名; 修改字符集 alter table 表名 character set 字符集;
8插入
所有的字段名都写出来 INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3); 不写字段名 INSERT INTO 表名 VALUES (值 1, 值 2, 值 3…); 插入部分数据 INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...); insert into student (id,name,age,sex) values (1, '孙悟空', 20, '男'); insert into student (id,name,age,sex) values (2, '孙悟天', 16, '男'); -- 插入所有列 insert into student values (3, '孙悟饭', 18, '男', '龟仙人洞中'); -- 如果只插入部分列,必须写列名 insert into student values (3, '孙悟饭', 18, '男'); select * from student;
insert的注意事项:
1) 插入的数据应与字段的数据类型相同 2) 数据的大小应在列的规定范围内,例如:不能将一个长度为 80 的字符串加入到长度为 40 的列中。 3) 在values中列出的数据位置必须与被加入的列的排列位置相对应。在mysql中可以使用value,但不建议使 用,功能与 values 相同。 4) 字符和日期型数据应包含在单引号中。MySQL 中也可以使用双引号做为分隔符。 5) 不指定列或使用 null,表示插入空值。
9查看 MySQL 内部设置的编码
查看包含 character 开头的全局变量 show variables like 'character%'; 解决方案 :修改 client、connection、results 的编码为 GBK,保证和 DOS 命令行编码保持一致
10蠕虫复制
将表名 2 中的所有的列复制到表名 1 中 INSERT INTO 表名 1 SELECT * FROM 表名 2; 只复制部分列 INSERT INTO 表名 1(列 1, 列 2) SELECT 列 1, 列 2 FROM student;
11更新表记录
-- 不带条件修改数据,将所有的性别改成女 update student set sex = '女'; -- 带条件修改数据,将id号为2的学生性别改成男 update student set sex='男' where id=2; -- 一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京 update student set age=26, address='北京' where id=3;
12删除表记录
-- 带条件删除数据,删除id为1的记录 delete from student where id=1; -- 不带条件删除数据,删除表中的所有数据 delete from student; 使用truncate删除表中所有记录 TRUNCATE TABLE 表名; truncate和delete的区别: truncate 相当于删除表的结构,再创建一张表。
13简单查询
查询所有的学生: select * from student; 查询 student 表中的 name 和 age 列 select name,age from student; 使用关键字 使用别名的好处: 显示的时候使用新的名字,并不修改表的结构。 -- 使用别名 select name as 姓名,age as 年龄 from student; -- 表使用别名 select st.name as 姓名,age as 年龄 from student as st ;
14清除重复值
-- 查询学生来至于哪些地方 select address from student; -- 去掉重复的记录 select distinct address from student;
15查询结果参与运算
select * from student; -- 给所有的数学加 5 分 select math+5 from student; -- 查询 math + english 的和 select * from student; select *,(math+english) as 总成绩 from student; -- as 可以省略 select *,(math+english) 总成绩 from student;
16 条件查询
准备数据 创建一个学生表,包含如下列:
CREATE TABLE student3 ( id int, -- 编号 name varchar(20), -- 姓名 age int, -- 年龄 sex varchar(5), -- 性别 address varchar(100), -- 地址 math int, -- 数学 english int -- 英语 ); INSERT INTO student3(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);undefined -- 查询math分数大于80分的学生 select * from student3 where math>80; -- 查询english分数小于或等于80分的学生 select * from student3 where english <=80; -- 查询age等于20岁的学生 select * from student3 where age = 20; -- 查询age不等于20岁的学生,注:不等于有两种写法 select * from student3 where age <> 20; select * from student3 where age != 20;undefined -- 查询 age 大于 35 且性别为男的学生(两个条件同时满足) select * from student3 where age>35 and sex='男'; -- 查询 age 大于 35 或性别为男的学生(两个条件其中一个满足) select * from student3 where age>35 or sex='男'; -- 查询 id 是 1 或 3 或 5 的学生 select * from student3 where id=1 or id=3 or id=5; -- 查询id是1或3或5的学生 select * from student3 where id in(1,3,5); -- 查询id不是1或3或5的学生 select * from student3 where id not in(1,3,5); 查询 english 成绩大于等于 75,且小于等于 90 的学生 select * from student3 where english between 75 and 90;undefined -- 查询姓马的学生 select * from student3 where name like '马%'; select * from student3 where name like '马'; -- 查询姓名中包含'德'字的学生 select * from student3 where name like '%德%'; -- 查询姓马,且姓名有两个字的学生 select * from student3 where name like '马_';