mysql的学习
1. CREATE table content ( 2. id int PRIMARY KEY auto_increment, 3. title VARCHAR(255) 4. );
1.1sql的基本操作
1.1.1 删除数据库
drop database mydatabase;
1.1.2 创建数据库
create database 数据库名字 【库选项】
1.1.3 cmd登录数据库
mysql -uroot -p + 输入密码
1.1.4显示数据库信息
显示全部:show datbases ,显示部分: show database like ‘匹配模式’ _:匹配当前位置单个字符,%:匹配指定位置多个字符。
获取以my开头的数据库,‘mdatabase’ ,获取以database为结尾的数据库 show databse like ’%databse'
1.1.5查看数据库创语句
show create database 数据库名字
1.1.6选择数据库
use 数据库名字 use mydatabase;
1.1.7 修改数据库
修改数据库字符集(库选项),字符集和校对集
修改数据库字符集 alter database mydatabase charset gbk;
1.1.8 删除数据库
drop database 数据库名字
1.1.9查询创建好的表的数据
1.2数据表
1.2.1创建数据表
create table class (
-- 字段名 字段类型
name varchar(10) --10个字符(不能超过)
)
1、挂在某个数据库的写法
create table mydatabase2.class(
name varchar(10)
)。
2、第二种写法,在创建的时候先进入某个数据库
use mydatabase;
charset 字符集
collate 校对集
1.2.2复制已有表结构
从已经存在的表复制一份(只复制结构,如果表中有数据则不复制)
基本语法: create table 新表名 like 表名;只要使用数据库表名,就可以在任何数据库下进行方位。
例如:在test中创建一个类似于teacher一样的数据库。
create table teacher like mydatabase2.teacher;
1.2.3查看数据匹配数据表
show tables like 't%';
1.2.4显示表结构
describe class;
desc teacher;
show columns from student;
1.2.5查看表创建语句
show create table student;
;和\g所在的效果都是一样的,\G则在左侧显示。
1.2.6修改表属性
alter table student charset gbk;
1.2.7 删除表结构
基础语法:drop table class;
1.2.8 修改表数据
update 表名 set 字段名 = 修改值 where 判断条件
一定要注意update后面加的是表名
实际例子:
update account set money = 2000 where id = 1;
1.3数据基础操作
1.3.1插入数据操作
本质含义,将数据存储到指定的数据表字段当中
-- 插入数据到数据表
基本语法:
Insert into 表名[(字段名)] value(对应字段列表)
insert into my_teacher (name,age) values('jack',30)
1.3.2 从数据表中查看数据
select * from my_core;
1.4 创建主键
主键创建的两种方法
1.4.1 如何在表创建的后续创建主键
alter table 表名 add primary key(字段);
1.4.2 查看数据库表中的主键的方法
方法一:
desc 表名 --查看表结构
主键是不允许为空的。
方法二:查看表的创建语句
show create table 表名
1.4.3 删除主键
alter -- 改变 drop -- 中止
1.4.4 创建复合主键的意义
实例
我装入一个0000001和课程course001的成绩数据,但如果我再想把这科目的成绩就不行了,
1.4.5 主键分类
1.4.6 自动增长
1.4.6.1 自动增长的含义
1.4.6.2 自动增长的原理
1.4.6.3自动增长的使用
1.4.6.4 自动增长的修改
alter table my_auto auto_increment = 10;在不输入数据后在输入就会出现10了。
1.4.6.5 删除自增长
就是在字段属性后不再保留auto_increment,使用alter table 表名 modify id int 可以修改字段属性。
alter table my_auto modify id int;
如果是没有而想要填上的写法:
alter table my_auto modify in int primary key auto_increment;
1.4.6.6 初始设置
1.4.6.7实例
自增长重点在于不能给值,其insert into插入的id为null;
1.4.6.8 如果表已经创建成功了,想要后期添加的方法
1、表不存在PRIMARY KEY字段,新增一个AUTO_INCREMENT字段
CREATE TABLE table_a (
user_id bigint(20) NOT NULL DEFAULT '0' COMMENT '商户后台管理员ID,对应sys_user表的user_id', agent_name varchar(100) NOT NULL DEFAULT '' COMMENT '代理商名称', contact_mobile varchar(15) NOT NULL DEFAULT '' COMMENT '联系人手机号', contact_address varchar(100) NOT NULL DEFAULT '' COMMENT '联系人地址'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='代理商信息';
alter table table_a add column agent_id bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '代理商id' first;
-- 新增AUTO_INCREMENT字段,字段名为agent_id(一般命名为id,这里只是演示一下别样的命名)
-- AUTO_INCREMENT必须是整数类型数据列
-- first表示新增的字段放在第一位
-- 自增字段必须是唯一的,所以设置为PRIMARY KEY
2、表已经存在PRIMARY KEY字段,新增一个AUTO_INCREMENT字段
实例
CREATE TABLE table_a (
user_id bigint(20) NOT NULL DEFAULT '0' COMMENT '商户后台管理员ID,对应sys_user表的user_id', agent_name varchar(100) NOT NULL DEFAULT '' COMMENT '代理商名称', contact_mobile varchar(15) NOT NULL DEFAULT '' COMMENT '联系人手机号', contact_address varchar(100) NOT NULL DEFAULT '' COMMENT '联系人地址', PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='代理商信息'
解决方法:
1.删除primary key字段
alter table table_a drop primary key
2.新增自增字段
alter table table_a add column agent_id bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '代理商id' first;
3、表已经存在PRIMARY KEY字段,把PRIMARY KEY字段设置为AUTO_INCREMENT字段
已经存在primary key字段了.
CREATE TABLE table_a (
user_id bigint(20) NOT NULL DEFAULT '0' COMMENT '商户后台管理员ID,对应sys_user表的user_id', agent_name varchar(100) NOT NULL DEFAULT '' COMMENT '代理商名称', contact_mobile varchar(15) NOT NULL DEFAULT '' COMMENT '联系人手机号', contact_address varchar(100) NOT NULL DEFAULT '' COMMENT '联系人地址', PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='代理商信息'
尝试:把table_a的字段user_id设置成自增类型:
alter table table_a modify column user_id bigint(20) NOT NUll DEFAULT 0
AUTO_INCREMENT COMMENT '商户后台管理员ID,对应sys_user表的user_id';
结果
Invalid default value for 'user_id'
失败原因:AUTO_INCREMENT字段不能有默认值。
修改
取消默认值
alter table table_a modify column user_id bigint(20) NOT NUll AUTO_INCREMENT COMMENT
综上:
如果出现已经存在primary key 时的写法为:
alter table 表名 modify column (主键选定的值)数据类型 NOT
AUTO_INCREMENT COMMENT
1.5 外键
1.5.1 外键的概念
1.5.2 增加外键的方法
1.5.3 外键中MUL的意义
MUL代表多索引。
constraint [kənˈstreɪnt] 限制
1.5.4 desc my_class 中的详情
1.5.5 查看外键的索引
show create table my_foreign;
1.5.6 my_student的创建
create table my_student(
stu_id int primary key auto_increment,
stu_name varchar(10),
class_id int(11)
)charset utf8;
1.6 链接oracle 以及其他数据文档的查询
DBA86 | 常用官方文档合集 一个好的链接
1.7 varchar的含义--数据类型的确定是学习的重点,我还不行
VARCHAR是一种数据类型,比CHAR更加灵活,VARCHAR可以保存可变长度的字符串,而CHAR不能。VARCHAR和CHAR同样用于表示字符数据。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。所以,对于那些难以估计确切长度的数据对象来说,使用VARCHAR数据类型更加明智。
- 1、使用比固定长度类型(char)占用更少存储空间(除了使用ROW_FORMAT=FIXED创建的MyISAM表).
2、使用额外的1-2字节来存储值长度,列长度<=255使用1字节保存,其它情况使用2字节保存。例如varchar(10)会占用11字节存储空间,varchar(500)会占用502字节存储空间。
3、节约空间,所以性能会有帮助。在更新的时候会产生额外的工作。
1.8 给字段添加备注
create table student (
name varchar(10) comment '名字',
scale varchar(10) comment '分数'
);