安装好数据库以后... ...
创建库
create database 数据库名字;
//创建名字为XXX的库 create database XXX;
🐱下面框属于扩展
{{ /~知识拓展:创建库时指定字符集(utf-8, gb2312)👇}}
# utf-8
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
# gbk
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
进入创建好的库
use XXX;
//use空格用户名分号,进入此库~。~!
查看当前库名称 / 信息
第一种: select database();
//简单明了 只能看在哪个库
第二种: status;
//详细复杂 格式路径系统啥都有
删除数据库
drop database 数据库名称;
// 例如删除teacher库 drop database teacher;
创建表
create table 表名(
列名 类型 是否可以为空,
列名 类型 是否可以为空
);
// 举例
ysql> create table teacher(
-> id int auto_increment primary key,
-> name varchar(10),
-> age int null, //可以为空的
-> phone char(11) not null default '' //不能为空的 ~~那个词忘了
-> );
Query OK, 0 rows affected (0.02 sec)
是否可空,null表示空,非字符串
not null - 不可空
null - 可空(非主键的默认值)
自增,如果为某列设置自增列,插入数据时无需设置此列的值,默认将自增(表中只能有一个自增列)
create table tb1(
id int auto_increment primary key, //id一般为自增
age int not null
)
主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
create table tb1(
id int not null auto_increment primary key,
age int null
)
或
create table tb1(
id int not null,
age int not null,
primary key(id,age)
)
表内填入内容
增加数据
mysql> insert into class ( class_name, create_date ) values ( '云5', '2018-05-16' );
mysql> insert into class ( class_name, create_date) values ( '云6', '2018.06.16' );
mysql> insert into class ( class_name, create_date ) values ( '云07', '26' ),('云计算1808','20180816');
insert into teacher (name, class_id) values ('杨哥', 1);
insert into teacher (name, class_id) values ('强哥', 3);
insert into teacher (name, class_id) values ('磊哥', 02);
修改表结构
添加列:
alter table 表名 add 列名 类型
/* 示例:
alter table stadent add gender Enum("男", "女");
alter table stadent add hobby set("girl","car","yacht");
update student set hobby = "girl,car";
*/
删除列:
alter table 表名 drop column 列名
修改列:
-- 修改类型
alter table 表名 modify column 列名 类型;
--修改列名和类型
alter table 表名 change 原列名 新列名 类型;
添加主键:
alter table 表名 add primary key(列名;
alter table students add id int not null auto_increment, add primary key (id);
删除主键:
alter table 表名 drop primary key;
- 删除主键属性,保留原值和列
alter table 表名 modify 列名 int, drop primary key;
查看数据库编码:
SHOW CREATE DATABASE db_name;
查看表编码:
SHOW CREATE TABLE tbl_name;
查看字段编码:
SHOW FULL COLUMNS FROM tbl_name;
单表查询
基础查询
select * from 表
select * from 表 where id > 2
select id,name,age as gg from 表 where id > 2
高级查询
a、条件
select * from 表 where id > 1 and name != '王麻子' and age = 18;
select * from 表 where id between 5 and 16;
select * from 表 where id in (11,22,33)
select * from 表 where id not in (11,22,33)
select * from 表 where id in (select id from 表)
b、通配符
select * from 表 where name like 'sha%' - sha开头的所有(多个字符串)
select * from 表 where name like 'shar_' - sha开头的所有(一个字符)
c、限制
select * from 表 limit 5; - 获取前 5 行
select * from 表 limit 0,2; - 从第 1 行开始, 取出 2 行, 包含第 1 行
select * from 表 limit 2 offset 0 - 从第 1 行开始, 取出 2 行, 包含第 1 行
d、排序
select * from 表 order by 列 asc - 根据 “列” 从小到大排列
select * from 表 order by 列 desc - 根据 “列” 从大到小排列
select * from 表 order by 列1 desc,列2 asc - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
e、分组
select age from 表 group by age
select age,id from 表 group by age,id
select age,id from 表 where id > 10 group by age,id order id desc
select age,id,count(*),sum(age),max(age),min(age) from 表 group by age,id
select age from 表 group by age having max(id) > 10
特别的:group by 必须在where之后,order by之前
f、嵌套查询
select * from (select name from t1 where age>18 and age < 25 order by id desc limit 2 ) as tt order by id;
常用类型
char / varchar
char (m)
char数据类型用于表示固定长度的字符串,可以包含最多达255个字符。
其中m代表字符串的长度。
PS: 即使数据小于m长度,也会占用m长度
varchar(m)
varchars数据类型用于变长的字符串,可以包含最多达255个字符。
其中m代表该数据类型所允许保存的字符串的最大长度,
只要长度小于该最大值的字符串都可以被保存在该数据类型中。
PS:虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,
char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。
因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡