数据库和表的基本操作
-
操作前的基本知识
-
基本
- sql语句不区分大小写(关键字建议用大小写),但字符串常量区分大小写
- sql语句可单行或多行书写,以; 结尾
- 关键字不能跨行或简写
- 可以用空格或者缩进来提高可读性
-
注释
-
sql标准
- /**/ :多行注释
- "--":单行注释
- /**/ :多行注释
-
mysql标准:
- "#":单行注释
- "COMMENT":为字段或列添加注释
- "#":单行注释
-
-
-
创建和查看数据库
-
创建数据库
- 模板
-
CREATE DATABASE [IF NOT EXISTS ] db_name
create_specification:
- IF NOT EXITSTS :检查数据库是否存在,如果存在就不创建
-
creat_specification:创建条件
- CHARACTER SET:制定数据聚采用的字符集
- COLLATE:制定数据库字符集的比较方式
- DEFAULT:表示默认内容,即使没有制定该项,也有默认的值
- CHARACTER SET:制定数据聚采用的字符集
#创建数据库使用字符集为UTF-8,使用规则为uftf_bin
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE uft8_bin;
- 一般默认的数据库就是utf8 和utf8_bin的比较方式,因此一般创建数据库的时候都用
CREATE DATABASE db_name
mysql> create database testdb;
Query OK, 1 row affected (0.02 sec)
-
查看数据库
-
命令
-
SHOW DATABASES
-
-
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| testdb |
| world |
+--------------------+
7 rows in set (0.00 sec)
- 这是查看所有的数据库
- SHOW CREATE DATABASE db_name
mysql> show create database testdb;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| testdb | CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)
- 这是查看创建db_name这个数据库的时候进行的操作,可以看到默认都是用了set utf8字符集
-
修改数据库
-
修改数据库编码格式语句
- ALTER DATABASE [ IF NOT EXITSTS ] 数据库名 DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin
- ALTER DATABASE [ IF NOT EXITSTS ] 数据库名 DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin
-
mysql> alter database testdb DEFAULT CHARACTER SET GBK;
Query OK, 1 row affected (0.01 sec)
需要修改数据的地方 就用alter
-
删除数据库
-
数据库删除语句格式
- DROP DATABASE [IF EXISTS ] db_name
-
mysql> drop database testdb;
Query OK, 0 rows affected (0.00 sec)
- drop 是整个都删除, 后面还有delete是删除内容,但是结构并没有删除
-
数据类型
略
-
数据表
-
创建或者使用表的时候,都要选择好数据库
- 使用语句:use db_name来选择数据库
- 使用语句:use db_name来选择数据库
-
mysql> use testdb;
Database changed
-
创建数据表
-
格式
-
CREATE TABALE 表名(
字段名 1,数据类型 [完整性约束条件],
字段名2,数据类型[完整性约束条件],
...
字段名n,数据类型[完整性约束条件],
);
- 例子:
-
-
mysql> CREATE TABLE TANKINFO(tankID int ,direciton int COMMENT'朝向',posX int,posY int );
Query OK, 0 rows affected (0.06 sec)
-
查看数据表
-
语句
- SHOW TABLES; 显示所有的数据表
- SHOW TABLES; 显示所有的数据表
-
mysql> SHOW TABLES;
+------------------+
| Tables_in_testdb |
+------------------+
| tankinfo |
+------------------+
1 row in set (0.00 sec)
- 显示数据表创建语句(show create table 表名;)
mysql> show create table tankinfo;
+----------+----------------------------------------------------------------------------
| Table | Create Table
|
+----------+----------------------------------------------------------------------------
| tankinfo | CREATE TABLE `tankinfo` (
`tankID` int(11) DEFAULT NULL,
`direciton` int(11) DEFAULT NULL COMMENT '朝向',
`posX` int(11) DEFAULT NULL,
`posY` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------+----------------------------------------------------------------------------
1 row in set (0.01 sec)
-
查看数据表
- DESCRIBE 表名; -->简写 DESC 表名;
- DESCRIBE 表名; -->简写 DESC 表名;
mysql> describe tankinfo;
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| tankID | int(11) | YES | | NULL | |
| direciton | int(11) | YES | | NULL | |
| posX | int(11) | YES | | NULL | |
| posY | int(11) | YES | | NULL | |
+-----------+---------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> desc tankinfo;
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| tankID | int(11) | YES | | NULL | |
| direciton | int(11) | YES | | NULL | |
| posX | int(11) | YES | | NULL | |
| posY | int(11) | YES | | NULL | |
+-----------+---------+------+-----+---------+-------+
4 rows in set (0.00 sec)
-
修改数据表
-
修改表名称
-
格式
- RENAME TABLE 表名 TO 新表名
- RENAME TABLE 表名 TO 新表名
-
-
mysql> rename table tankinfo to tank_test;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| tank_test |
+------------------+
1 row in set (0.00 sec)
-
添加新的字段
-
格式
-
ALTER TABLE 表名 ADD 新字段 数据类型 [类型][FIRST | AFTER 已存在的字段名];
- FIRST :将新添加的字段放在第一个字段
- AFTER:将新添加的字段放在已存在的字段之后
- FIRST :将新添加的字段放在第一个字段
-
- 示例1
-
mysql> alter table tank_test add name varchar(10);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tank_test;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| tankID | int(11) | YES | | NULL | |
| direciton | int(11) | YES | | NULL | |
| posX | int(11) | YES | | NULL | |
| posY | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
- 添加字段默认是放在最后一个的
- 示例2
mysql> alter table tank_test add blood int first;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tank_test;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| blood | int(11) | YES | | NULL | |
| tankID | int(11) | YES | | NULL | |
| direciton | int(11) | YES | | NULL | |
| posX | int(11) | YES | | NULL | |
| posY | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
- first是把字段加到第一个位置
- 示例3
mysql> alter table tank_test add isCrash int after tankID;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tank_test;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| blood | int(11) | YES | | NULL | |
| tankID | int(11) | YES | | NULL | |
| isCrash | int(11) | YES | | NULL | |
| direciton | int(11) | YES | | NULL | |
| posX | int(11) | YES | | NULL | |
| posY | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
- after 是在某个字段的后面添加
-
修改字段名称
-
格式
- ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型
- ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型
-
mysql> alter table tank_test change name TankName varchar(10);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tank_test;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| blood | int(11) | YES | | NULL | |
| tankID | int(11) | YES | | NULL | |
| isCrash | int(11) | YES | | NULL | |
| direciton | int(11) | YES | | NULL | |
| posX | int(11) | YES | | NULL | |
| posY | int(11) | YES | | NULL | |
| TankName | varchar(10) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
-
修改字段的数据类型
-
格式
- ALTER TABLE 表名 MODIFY 字段名 数据类型;
- ALTER TABLE 表名 MODIFY 字段名 数据类型;
-
mysql> alter table tank_test modify TankName int ;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tank_test;
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| blood | int(11) | YES | | NULL | |
| tankID | int(11) | YES | | NULL | |
| isCrash | int(11) | YES | | NULL | |
| direciton | int(11) | YES | | NULL | |
| posX | int(11) | YES | | NULL | |
| posY | int(11) | YES | | NULL | |
| TankName | int(11) | YES | | NULL | |
+-----------+---------+------+-----+---------+-------+
7 rows in set (0.00 sec)
-
删除字段
-
格式
- ALTER TABLE 表名 DROP 字段名;
- ALTER TABLE 表名 DROP 字段名;
-
mysql> alter table tank_test drop blood;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tank_test;
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| tankID | int(11) | YES | | NULL | |
| isCrash | int(11) | YES | | NULL | |
| direciton | int(11) | YES | | NULL | |
| posX | int(11) | YES | | NULL | |
| posY | int(11) | YES | | NULL | |
| TankName | int(11) | YES | | NULL | |
+-----------+---------+------+-----+---------+-------+
6 rows in set (0.00 sec)
-
删除数据表
-
格式
- DROP TALBE 表名;
- DROP TALBE 表名;
-
mysql> drop table tank_test;
Query OK, 0 rows affected (0.02 sec)
<
p style="margin-left: 54pt">
The post 数据库(MySQL)编程之数据库和表的基本操作 appeared first on cole.
http://ift.tt/eA8V8J sql September 08, 2017 at 09:29PM
评论
发表评论