一、查看数据库信息

1 mysql -uroot -p123123             #登录数据库
 2 mysql> show databases;
 3 +--------------------+
 4 | Database           |
 5 +--------------------+
 6 | information_schema |             #定义访问数据库单元数据的方式。数据库名和表名,列的数据类型、访问权限等。
 7 | bbs                |             #bbs论坛的数据库
 8 | myadm              |             #myadm的数据库
 9 | mysql              |             #核心数据库,负责存储数据库用户、权限、关键字等用户自己需要使用的控制和管理信息。
10 | performance_schema |             #数据库的性能参数,存储引擎等。
11 | sys                |             #sys系统库下包含许多试图,它们以各种方式对performance_schema表进行聚合计算展示。
12 +--------------------+
13 6 rows in set (0.00 sec)

二、查看当前数据库中有哪些表

1 mysql> USE mysql;               #USE 数据库名;
 2 Reading table information for completion of table and column names
 3 You can turn off this feature to get a quicker startup with -A
 4 
 5 Database changed
 6 mysql> show tables;
 7 +---------------------------+
 8 | Tables_in_mysql           |
 9 +---------------------------+
10 | columns_priv              |
11 | db                        |
12 | engine_cost               |
13 | event                     |
14 | func                      |
15 | general_log               |
16 | gtid_executed             |
17 | help_category             |
18 | help_keyword              |
19 | help_relation             |
20 | help_topic                |
21 | innodb_index_stats        |
22 | innodb_table_stats        |
23 | ndb_binlog_index          |
24 | plugin                    |
25 | proc                      |
26 | procs_priv                |
27 | proxies_priv              |
28 | server_cost               |
29 | servers                   |
30 | slave_master_info         |
31 | slave_relay_log_info      |
32 | slave_worker_info         |
33 | slow_log                  |
34 | tables_priv               |
35 | time_zone                 |
36 | time_zone_leap_second     |
37 | time_zone_name            |
38 | time_zone_transition      |
39 | time_zone_transition_type |
40 | user                      |
41 +---------------------------+
42 31 rows in set (0.00 sec)

三、查看表的结构

1 mysql> USE mysql;
2 mysql> DESCRIBE user;       #DESCRIBE [数据库名.]表名

四、SQL语句概述

4.1、SQL语言

4.1.1、Structured Query Language的缩写,即结构化查询语言

4.1.2、关系型数据库的标准语言

4.1.3、用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能

4.2、SQL分类

4.2.1、DDL(Data Definition Language)数据定义语言:用来建立数据库、数据库对象和定义字段,如CREATE、ALTER、DROP

4.2.2、DML(Data Manipulation Language)数据操纵语言:用来插入、删除和修改数据库中的数据,如INSERT、UPDATE、DELETE

4.2.3、DQL(Data Query Language)数据查询语言:用来查询数据中的数据,如SELECT

4.2.4、DCL(Data Control Language)数据控制语言:用来控制数据库组件的存取许可、存取权限等,如COMMIT、ROLLBACK、GRANT、REVOKE

五、DDL(Data Definition Language)数据定义语言

 5.1、创建新的数据库和新的表

1 mysql> CREATE DATABASE ycx;                     #CREATE DATABASE 数据库名
2 mysql> create table users(username CHAR(26) NOT NULL,passwd CHAR(36) DEFAULT'123123',PRIMARY KEY(username));  #CREATE TABLE 表名(字段定义......)

 5.2、删除一个数据表

1 mysql> DROP TABLE ycx.users;

 5.3、删除一个数据库

1 mysql> DROP DATABASE ycx;

六、DML(Data Manipulation Language)数据操纵语言

 6.1、创建新的数据库和新的表

1 mysql> CREATE DATABASE ycx;
2 mysql> use ycx;
3 mysql> CREATE TABLE users(name CHAR(36) NOT NULL,passwd CHAR(48) DEFAULT'123456',PRIMARY KEY (name));
4 mysql> show tables
5 mysql> describe users

6.2、插入数据记录

1 语法:INSERT INTO 表名(字段1,字段2...) VALUES(字段1的值,字段2的值...)
2 mysql> use ycx;
3 mysql> INSERT INTO users VALUES('lisi',default)      #default是默认密码
4 mysql> INSERT INTO users(name,passwd) VALUES('zhangsan',PASSWORD'123123');

6.3、查询数据记录

1 语法:SELECT 字段名1,字段名2,... FROM 表名 WHERE 条件表达式
2 mysql> SELECT * FROM ycx.users           
3 mysql> SELECT name,passwd FROM xuhao.users WHERE name='zhangsan';

6.4、修改数据记录

1 语法:UPDATE 表名 SET 字段名1=字段值1[字段名2=字段值2] WHERE 条件表达式
2 mysql> UPDATE ycx.users SET passwd=PASSWORD('123321') WHERE name='lisi';   
3 mysql> SELECT * FROM xuhao.users;

6.5、修改数据库密码

1 mysql> UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='root';
2 mysqladmin -u root -p'123456' password '123123'

6.6、删除数据库的记录

1 语法:DELETE FROM 表名 WHERE 条件表达式
2 mysql> DELETE FROM ycx.users WHERE name='lisi';
3 mysql> SELECT * FROM ycx.users;

七、数据表的高级操作

7.1、清空表

1 mysql> DELETE FROM ycx.users;
2 mysql> TRUNCATE TABLE ycx.users;

7.2、创建临时表

临时建立的表,用于保存一些临时数据,不会长期存在

1 mysql> CREATE TEMPORARY TABLE `yy`(`id` int(20) NOT NULL AUTO_INCREMENT,`ame name` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`level` int(20) NOT NULL,PRIMARY KEY (id))ENGINE=InnoDB DEFAULT CHARSET=utf8;
2 mysql> INSERT INTO yy(name,level) VALUES('aa',10);
3 mysql> select * from yy;     #临时建立的,退出后失效

7.3、克隆表

7.3.1、LIKE方法

1 mysql> create table test like yy;
2 mysql> insert into test select * from yy;

7.3.2、SHOW CREATE TABLE方法

1 mysql> show create table yy\G
2 mysql> create table test1("id" int(20) NOT NULL AUTO_INCREMENT,   "name" varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,   "level" int(20) NOT NULL,   PRIMARY KEY ("id") ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
3 mysql> insert into test1 select * from yy;

7.4、数据库用户授权

1 mysql> insert into users(name,passwd) VALUES('lisi',PASSWORD'123123');
2 语法:GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 IDENTIFIED BY '密码'
3 mysql> GRANT select ON ycx.users TO 'lisi'@'localhost' IDENTIFIED BY '123456';

7.5、查看用户权限

1 语法:SHOW GRANTS FOR 用户名@来源地址
2 mysql> SHOW GRANTS FOR 'lisi'@'localhost';
3 exit
4 mysql -ulisi -p 123456

7.6、撤销用户的权限

1 语法:REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址
2 mysql> REVOKE all ON ycx.users FROM 'lisi'@'localhost';

 7.7、alter用法

1 删除列
 2 ALTER TABLE 【表名字】 DROP 【列名称】
 3 
 4 增加列
 5 ALTER TABLE 【表名字】 ADD 【列名称】 INT NOT NULL  COMMENT '注释说明'
 6 
 7 修改列的类型信息
 8 ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称(这里可以用和原来列同名即可)】 BIGINT NOT NULL  COMMENT '注释说明'
 9 
10 重命名列
11 ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称】 BIGINT NOT NULL  COMMENT '注释说明'
12 
13 重命名表
14 ALTER TABLE 【表名字】 RENAME 【表新名字】
15 
16 删除表中主键
17 Alter TABLE 【表名字】 drop primary key
18 
19 添加主键
20 ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY (resid,resfromid)
21 
22 添加索引
23 ALTER TABLE sj_resource_charges add index INDEX_NAME (name);
24 
25 添加唯一限制条件索引
26 ALTER TABLE sj_resource_charges add unique emp_name2(cardnumber);
27 
28 删除索引
29 alter table tablename drop index emp_name;