0
点赞
收藏
分享

微信扫一扫

学习MySQL之表操作


文章目录

  • ​​一、创建数据表​​
  • ​​二、删除数据表​​
  • ​​三、插入数据​​
  • ​​四、删除数据​​
  • ​​五、修改数据​​
  • ​​六、查询数据​​
  • ​​6.1、MySQL WHERE子句​​
  • ​​6.2、MySQL LIKE子句​​
  • ​​6.3、MySQL UNION子句​​
  • ​​UNION实例:​​
  • ​​UNION ALL 实例:​​
  • ​​带有WHERE的SQL UNION AL实例:​​

一、创建数据表

CREATE TABLE table_name(column_name column_type);

一下例子中我们将在Test数据库中创建表Student:

CREATE TABLE IF NOT EXISTS `Student`(
`ID` INT UNSIGNED AUTO_INCREMENT,
`NAME` VARCHAR(100) NOT NULL,
`CLASS` VARCHAR(40) NOT NULL,
PRIMARY KEY ( `ID` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

解析:

  1. 如你不想字段为NULL,可以设置字段的属性为NOT NULL,在操作数据库时如果输入该字段的数据为NULL,就会报错。
  2. AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  3. PRIMARY KEY关键字用于定义主键。您可以使用多列来定义主键,列间以逗号分隔。
  4. ENGINE设置存储引擎,CHARSET设置编码。

root@host# mysql -u root -p
Enter password:*******
mysql> use Test;
Database changed
mysql> CREATE TABLE Student(
-> ID INT NOT NULL AUTO_INCREMENT,
-> NAME VARCHAR(100) NOT NULL,
-> CLASS VARCHAR(40) NOT NULL,
-> PRIMARY KEY ( runoob_id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)
mysql>

**注意:**MySQL命令终止符为分号 ;

注意: -> 是换行符标识,不要复制。

二、删除数据表

DROP TABLE table_name;

以下是删除Test数据库中数据表Student的实例:

root@host# mysql -u root -p
Enter password:*******
mysql> use Test;
Database changed
mysql> DROP TABLE Student
Query OK, 0 rows affected (0.8 sec)
mysql>

三、插入数据

INSERT INTO table_name(cloumn1,cloumn2,...,cloumnN)
VALUES
(value1,value2,...,valueN);

以下是向Student表中插入一条数据的实例:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use Test;
Database changed
mysql> INSERT INTO Student
-> (ID, NAME, CLASS)
-> VALUES
-> (1001, "张三", "三年一班");
Query OK, 1 rows affected, 1 warnings (0.01 sec)
mysql>

注意:使用箭头标记​​->​​​不是SQL语句的一部分,它仅仅表示一个新行,如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号​​;​​ 。

四、删除数据

当你想删除数据表中指定的记录是,WHERE子句是非常有用的。

DELETE FROM table_name [WHERE Clause]

  1. 如果没有指定WHERE子句,MySQL表中的所有记录都将被删除。
  2. 你可以在WHERE子句中指定任何条件。
  3. 你可以在单个表中一次性删除记录

mysql> use Test;
Database changed
mysql> DELETE FROM Student WHERE NAME="张三";
Query OK, 1 row affected (0.23 sec)

五、修改数据

UPDATE table_name SET field1=new-value1,field2=new-value2
[WHERE Clause]

  1. 你可以同时更新一个或多个字段。
  2. 你可以在WHERE子句中指定任何条件。
  3. 你可以在一个单独表中同时更新数据

mysql> UPDATE Student SET NAME="李四" WHERE ID=1001;
Query OK, 1 rows affected (0.01 sec)

mysql> SELECT * from Student WHERE ID=1001;
+-----------+--------------+---------------+
| ID | NAME | CLASS |
+-----------+--------------+---------------+
| 1001 | 李四 | 三年一班 |
+-----------+--------------+---------------+
1 rows in set (0.01 sec)

六、查询数据

SELECT cloumn_name,column_name 
FROM table_name
[WHERE Clause]
[LIMIT N] [OFFSET M]

  1. 查询语句中你可以使用一个或多个表,表之间使用逗号分割,并使用WHERE语句来设定查询条件。
  2. SELECT命令可以读取一条或者多条记录;
  3. 你可以使用星号(*)来代替其它字段,SELECT语句会返回表的所有字段数据。
  4. 你可以使用WHERE语句来包含任何条件。
  5. 你可以使用LIMIT属性来设定返回的记录数。
  6. 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

6.1、MySQL WHERE子句

SELECT field1,field2,...,fieldN FROM table_name1,tabale_name2...
[WHERE condition1 [AND [OR]] condition2...

  1. 查询语句中你可以使用一个或者多个表,表之间使用逗号分割,并使用WHERE语句来设定查询条件。
  2. 你可以在WHERE子句中指定任何条件。
  3. 你可以使用AND或者OR指定一个或多个条件。
  4. WHERE子句也可以运用于SQL的DELETE或者UPDATE命令。
  5. WHERE子句类似于程序语言中的if条件,根据MySQL表中的字段值来读取制定的数据。

以下为操作符列表,可用于WHERE子句中:(下表中实例假定A为10,B为20)

操作符

描述

实例

=

等号,检测两个值是否相等,如果相等返回true

(A=B)返回false

!=

不等于,检测两个值是够不相等,如果不相等返回true

(A!=B)返回true

>

大于号,检测左边的值是否大于右边的值,如果大于返回true

(A>B)返回false

<

小于号,检测左边的值是否小于右边的值,如果小于返回true

(A<B)返回true

>=

大于等于号,检测左边的值是否大于等于右边的值,如果大于等于返回true

(A>=B)返回false

<=

小于等于号,检测左边的值是否小于等于右边的值,如果小于等于返回true

(A<=B)返回true

如果我们想在MySQL数据表中读取指定的数据,WHERE子句是非常有用的。

使用主键来作为WHERE子句的条件查询是非常快速的。

如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据。

mysql> SELECT * from Student WHERE ID=1001;
+-----------+--------------+---------------+
| ID | NAME | CLASS |
+-----------+--------------+---------------+
| 1001 | 李四 | 三年一班 |
+-----------+--------------+---------------+
1 rows in set (0.01 sec)

6.2、MySQL LIKE子句

我们在使用​​SELECT​​​语句查询数据时可以在WHERE子句中使用等号​​=​​来设定获取数据的条件,但是有时候我们需要获取非特定的数据,而是需要获取满足某种情况的数据(即模糊匹配),例如:查询Student表中所有姓王的同学的信息。

SQL LIKE子句使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号(*)

如果没有使用百分号(%),LIKE子句与等号(=)的效果是一样的。

SELECT field1,field2,...,fieldN
FROM table_name
WHERE field1 LIKE condition [AND [OR]] field2 = 'someval(232, 232, 232); background: rgb(249, 249, 249);">

mysql> use Test;
Database changed
mysql> SELECT * from Student WHERE NAME LIKE "王%";
+-----------+---------------+---------------+
| ID | NAME | CLASS |
+-----------+---------------+---------------+
| 1001 | 王大力 | 三年一班 |
| 1087 | 王一凡 | 三年九班 |
+-----------+---------------+---------------+
2 rows in set (0.01 sec)

6.3、MySQL UNION子句

MySQL UNION操作符用于连接两个以上的SELECT语句的结果组合到一个结果集中。多个SELECT语句会删除重复的数据。

SELECT expression1,expression2,...,expressionN
FROM table_name
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1,expression2,...,expressionN
FROM table_name
[WHERE conditions];

参数

  1. expression1,expression2,…,expressionN:要检查的列
  2. table_name:要检查的数据表
  3. WHERE conditions:可选,检索条件
  4. DISTINCT:可选,删除结果集中重复的数据。默认情况下UNION操作符以及删除了重复数据,所以DISTINCT修饰符对结果没啥影响
  5. ALL:可选,返回所有结果集,包含重复数据
UNION实例:

mysql> SELECT * FROM Websites;
+----+---------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+---------------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN |
| 3 | 百度 | http://www.baidu.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND |

mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name | url | country |
+----+------------+-------------------------+---------+
| 1 | QQ APP | http://im.qq.com/ | CN |
| 2 | 微博 APP | http://weibo.com/ | CN |
| 3 | 淘宝 APP | https://www.taobao.com/ | CN |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)

mysql> SELECT country FROM Websites
-> UNION
->SELECT country FROM apps
->ORDER BY country;
+---------+
| countru |
+---------+
| CN |
| IND |
| USA |

UNION ALL 实例:

mysql> SELECT country FROM Websites
-> UNION ALL
->SELECT country FROM apps
->ORDER BY country;
+---------+
| countru |
+---------+
| CN |
| CN |
| CN |
| CN |
| CN |
| IND |
| USA |
| USA |
| USA |
| USA |

带有WHERE的SQL UNION AL实例:

SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;
+---------+-----------+
| countru | name |
+---------+-----------+
| CN | 淘宝 |
| CN | QQ APP |
| CN | 微博 APP |
| CN | 微博 |
| CN | 百度 |
| CN | 淘宝 APP |


举报

相关推荐

0 条评论