43.结构化查询语言SQL及MySQL(一)

转载请注明原始出处:http://blog.csdn.net/a464057216/article/details/52496916

后续此博客不再更新,欢迎大家搜索关注微信公众号“测开之美”,测试开发工程师技术修炼小站,持续学习持续进步。
在这里插入图片描述

简介

SQL是ANSI标准下访问和处理数据库的结构化查询语言。SQL可以在各个RDBMS(关系型数据库管理系统,如MySQL、Microsoft Access)中使用,各个RDBMS也有自己独有的扩展。
RDBMS中,不同数据存储在不同的数据库中。每个数据库通常包含多个表,多个表由表名区分。表由行和列组成,每一行对应一条数据,每一列对应数据的一个属性。

下面通过MySQL介绍SQL语言。首先查看MySQL状态:

mysql> status;
--------------
/usr/local/mysql/bin/mysql  Ver 14.14 Distrib 5.7.15, for osx10.11 (x86_64) using  EditLine wrapper

Connection id:        1779
Current database:    lmz
Current user:        root@localhost
SSL:            Not in use
Current pager:        less
Using outfile:        ''
Using delimiter:    ;
Server version:        5.7.15 MySQL Community Server (GPL)
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /tmp/mysql.sock
Uptime:            4 hours 34 min 45 sec

Threads: 1  Questions: 161  Slow queries: 0  Opens: 120  Flush tables: 1  Open tables: 101  Queries per second avg: 0.009
--------------

如果字符集的配置不是utf8,建议改成utf8:

mysql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;
mysql> set character_set_results=utf8;
mysql> set character_set_server=utf8;

set命令后面的参数可以通过如下命令查询:

mysql> show variables like "character%";
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | utf8                                                    |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8                                                    |
| character_set_server     | utf8                                                  |
| character_set_system     | utf8                                                    |
| character_sets_dir       | /usr/local/mysql-5.7.15-osx10.11-x86_64/share/charsets/ |
+--------------------------+---------------------------------------------------------+
8 rows in set (0.11 sec)

把除了character_set_filesystemcharacter_sets_dir之外的变量都设置成utf8。

SQL语言

SQL语言分为两部分:数据定义语言(DDL)和数据操作语言(DML)。
##DDL
包括创建/删除/修改数据库/数据表的方法、定义索引、添加表约束等:

show databases

列出全部数据库。

create database <database_name>

创建名为<database_name>的数据库,比如create database mars;

drop database <database_name>

删除名为<database_name>的数据库。

use <database_name>

使用某个数据库(然后才能操作其中的表),比如use mars;

show tables

查看数据库中所有数据表。

create table <table_name> (<column_1> <type>, ..)

创建数据表,其中<table_name>表示表名,<column_n>表示列名,<type>表示对应列的数据类型。

添加列的约束条件
not null

not null表示该列不接受空,比如:
这里写图片描述

NULL表示没有值,和取值为0不同。

unique

unique限制某一列或者多个列元素的唯一性(如果该列允许为NULL的话,则唯一性无法限制存在多个NULL的情况,所以如果限制为unique,最好同时限制not null),比如:
这里写图片描述

也可以为unique的规则命名,比如:
这里写图片描述

使用规则的名字可以删除这条规则,比如:
这里写图片描述

如果unique规则在创建时没有命名,删除方法如下:

mysql> create table a (id int(5), op varchar(15), unique (id));
Query OK, 0 rows affected (0.03 sec)

mysql> show create table a;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                    |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| a     | CREATE TABLE `a` (
  `id` int(5) DEFAULT NULL,
  `op` varchar(15) DEFAULT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter table a drop index `id`;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table a;
+-------+-----------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                          |
+-------+-----------------------------------------------------------------------------------------------------------------------+
| a     | CREATE TABLE `a` (
  `id` int(5) DEFAULT NULL,
  `op` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+------
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值