查看当前登陆的用户
mysql> select user();
重置数据库管理员密码
SET PASSWORD FOR “root”@‘localhost’=PASSWORD(‘123456’);
mysql> set password for [email protected]=password(‘123456‘);重置用户密码
查看当前所在库
mysql> select database();
| database() |
| NULL |
查看所有库
mysql> show databases;
| Database |
默认库
| information_schema | 存储数据库服务器上已有的库和表的信息
| mysql | 授权库
| performance_schema |数据库服务器运行的参数信息
| test |公共库,任何能登陆到服务器的用户都对此库有操作权限
Create既可以建库又可以建表
Create database 数据库名;
mysql> create database student;
Query OK, 1 row affected (0.02 sec)
创建数据库的规则:
1、 数据库名具有唯一性
2、 数据库名区分大小写
3、 命名可以使用字母数字下划线
4、 不能纯数字
5、 不能使用特殊符号。
6、 不能用关键字
Use 数据库名,切换数据库
mysql> use student
Database changed
存放在数据库的库和表都是以文件的形式存放在数据库目录下的。
查看所有表
mysql> show tables;
\c中止一条sql语句
删除一个库
mysql> drop database wqe;
建表
Create table 表名(
字段名 类型(宽度) 约束条件,
字段名 类型(宽度) 约束条件,
。。。
)
创建一个表
mysql> create table stu_tab(age int);
Query OK, 0 rows affected (0.21 sec)
查看表结构
mysql> desc stu_tab;
| Field | Type | Null | Key | Default | Extra |
| age | int(11) | YES | | NULL | |
表中插入信息记录
mysql> insert into stu_tab(age)values(19);
Query OK, 1 row affected (0.04 sec)
查看表中所有信息
mysql> select * from stu_tab;
| age |
| 19 |
Mysql数据类型:
tinyint 微小整数占一个字节默认有符号类型后加unsigned表示无符号的
smallint 小整数:占2个字节。
int 大整数:占4个字节
float(M,N)单精度 M表示数字的总位数,N表示小数位的位数。
double 双精度
char定长
varchar变长
year 1个字节1901~2155,默认4位数字表示,当只用2 位数字赋值时,01~69视为2000~2069,而70~99视为1970~1999。00视为0000.
date 4个字节0001-01-01 ~ 9999-12-31
time 3个字节HH:MM:SS
datetime 8个字节1000-01-01 00:00:00.000000~9999-12-31 00:00:00.000000
timestamp 4个字节 1970-01-01 00:00:00.000000~2038-01-39 03:14:07.999999
当未给timestamp字段赋值时,自动以当前时间赋值,而datetime字段默认赋值为0.
now() 获取调用此函数时的系统日期时间
sysdate() 执行时动态获得系统日期时间
sleep(N) 休眠N秒
curdate() 获取当前的系统日期
curtime() 获取当前的系统时间
month() 获取指定时间中的月份
date() 获取指定时间的日期
time() 获取指定时间的是时刻
set(值1,值2,值3.。。) 多选
enum(值1,值2.。。) 单选
例:
create table stu_tab1( name char(3) not null, age int(3) not null default 25, class char(10) not null default 1312, sex enum("boy","girl") not null default "boy", love set("book","film","football","game"), startday date not null, address char(10) not null default "beijing", telephone char( 11) not null );
修改表结构
操作:添加新字段 add
格式:add 字段名 类型(宽度) 约束条件;
添加多个字段处理动作用逗号隔开。
first指定添加字段到已有字段的最前面,不指定默认追加到已有 字段名末尾。
after 指定添加字段到指定已有字段的下方。
修改字段名 (类型约束条件等)change
格式:change 源字段名 新字段名 类型(宽度) 约束条件
修改字段类型约束条件等 modify
格式:modify 字段名 类型(宽度) 约束条件;
删除已有字段drop
格式:drop 字段名;
命令格式:alter table 表名 处理动作;多个动作之间用逗号间隔。
例:
alter table stu_tab1 add stu_num varchar(4) not null first,add loves set(‘book‘,‘film‘,‘music‘,‘footbal‘) not null default ‘film,music‘ after name; alter table stu_tab1 modify age tinyint(3) unsigned not null default 22; alter table stu_tab1 add qq varchar(11),add mail varchar(50); alter table stu_tab1 modify stu_num char(4) nut null; alter table stu_tab1 modify stu_num char(4) not null; alter table stu_tab1 drop sex,drop love; alter table stu_tab1 add sex enum(‘m‘,‘w‘,‘x‘) not null default ‘m‘; alter table stu_tab1 modify sex enum(‘m‘,‘w‘,‘x‘) not null default ‘m‘ after age; alter table stu_tab1 change stu_num stu_id char(4) not null; alter table stu_tab1 add birthday date not null after sex,add startday year not null after birthday,add xf float(6,2) not null after mail; delete from stu_tab1
复制表和表结构
复制表
create table 表名 sql查询语句;
create table 表名 select * from 被复制表名;复制时将表和内容全部复制。
复制表结构。
create table 表名 select * from 被复制表名 where 不存在的条件 (例如 1=2)。
复制表和表结构的时候,原表的key字段属性不会被复制到新表。
修改表名
alter table 原表名 rename 新表名;
表中的记录不会受影响。
mysql支持的索引类型:
INDEX:普通索引(index)一个表中可以有多个INDEX字段对应的字段值允许重复 把经常做查询条件的字段设置为INDEX字段 INDEX字段的KEY标志为MUL
UNIQUE:唯一索引(unique)一个表中可以有多个unique字段对应的字段值不允许重复 unique字段的key标志位uni unique字段修改为不允许为NULL时,则此字段限制与主键相同
FULLTEXT:全文索引(fulltext)
PRIMARY KEY:主键(primary key)一个表中只能有一个PRIMARY KEY字段 主键字段值不允许冲去,且不允许为空 如果有多个字段都作为PRIMARY KEY,称为复合主键,必须在建表时一起创建 主键字段的KEY标志是PRI 通常与AUTO_INCREMENT连用 用主键字段作为操作的条件,能够唯一定位到一条记录。通常把记录的编号设为主键。
FOREIGN KEY:外键(foreign key)作用:让当前表里指定字段的值参考另外一个表里字段的值 表的存储引擎要是innodb,只有innodb支持外键 表中外键字段的类型要与参考表的字段类型一致 外键字段要是索引类型的一种 一个表里只能存在一个外键
例:
index(字段名1,字段名2), //建表时设置为INDEX字段,添加在最后。 show indexfrom 库名.表名;//查看表中的索引详细信息 index_type //索引的算法 drop index 索引名 on 表名; create index 索引名 on 表名(字段名); unique(字段名) update更新表记录 update 表名 set 字段名=‘字段值’; create unique index 索引名 on 表名(字段名); id int(2) auto_increment, //auto_increment 自动增长,类型必须为数值型才可以用。必须是主键。 alter table 表名 drop primary key;//删除主键,删除主键之前必须删除auto_increment。 primary key(字段名) 也可以直接写在字段类型后面 primary key。 alter table 表名 add primary key(id);//表存在之后在表中创建主键。 复合主键:只要复合主键字段的值不同时重复就可以。 创建复合主键 create table ser_tab( ip varchar(10) not null, port varchar(10) not null, primary key(ip,port) ); 建外键的语法格式 foreign key(字段名) references 表名(字段名) A表参照B表,前边为A表中的字段名,后为B表的表名字段名。 on update cascade 同步更新 on delete cascade 同步删除 当前表为从表,被参考的表为主表。 删除外键 alter table 表名 drop foreign key 外键名; 外键名称查看建表过程查看到。 alter table stu_tab1 add id int(3) primary key auto_increment first; create index name on stu_tab1(name,sex); create unique index stu_id on stu_tab1(stu_id,telephone,qq);
查看当前服务器可以使用的存储引擎.
mysql> show engines;
| Engine | Support | Comment | Transactions | XA | Savepoints |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
建表的时候指定存储引擎
create table 表名(字段列表)engine=存储引擎名;
查看表的创建过程
show create table 表名
修改表的存储引擎
alter table 表名 engine=存储引擎名
查看当前的锁状态
show status like ‘table_lock%’; %通配符