primary key:主键
auto_increment:自动递增
not null:非空
default 0:默认值
unique:唯一值
create table if not exists customers (
customer_id int primary key auto_increment,
first_name varchar(50) not null,
points int not null default 0,
email varchar(255) not null unique
);
不要在生产环境下更改表,这样会造成严重后果。在测试数据库上尝试更改,确保执行正常且不会产生任何不良影响后,再在生产数据库中更改。
add:添加列,after可选择添加列的位置,如果不写就默认加在最后一列
modify:修改列,可修改列数据类型、属性
drop:删除列
alter table customers
add last_name varchar(50) not null after first_name,
add city varchar(50) not null ,
modify first_name varchar(55) default '',
drop points;
create database if not exists sql_store2;
use sql_store2;
drop table if exists orders; -- 删除订单表语句在前。
drop table if exists customers;
create table if not exists customers (
customer_id int primary key auto_increment,
first_name varchar(50) not null,
points int not null default 0,
email varchar(255) not null unique
);
create table if not exists orders(
order_id int primary key,
customer_id int not null ,
foreign key fk_orders_customers (customer_id)
references customers(customer_id)
on update cascade
on delete restrict
);
alter table orders
add primary key (order_id),
drop primary key,
drop foreign key orders_ibfk_1,
add foreign key fk_orders_customers (customer_id)
references customers(customer_id)
on update cascade
on delete no action
show charset:查询当前版本MySQL支持的所有字符集
utf-8:是MySQL版本5以上使用的默认字符集,可以存储几乎所有国际语言。多数情况下不需要考虑更改字符集。
character set 字符集:设置字符集
库的字符集
-- 创建库时设置字符集
create database db_name
character set latin1
-- 更改数据库的字符集
alter database db_name
character set latin1
表的字符集
-- 创建表时设置字符集
create table customers(id int, name varchar(50), phone varchar(255))
character set latin1
-- 更改表的字符集
alter table customers
character set latin1
特定列的字符集:如想为名字列设置字符集,在数据类型后设置字符集。
create table if not exists customers (
first_name varchar(50) character set latin1 not null
);
存储引擎决定了数据如何被存储,及哪些功能可供使用。
show engines:查看当前版本MySQL支持的所有存储引擎。
常用的存储引擎:
alter table customers
engine = InnoDB