43.結構化查詢語言SQL及MySQL(一)
簡介
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: [email protected]
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_filesystem
和character_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 |
+-------+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
對於已經建立的表,可以使用alter table
語句增加unique限制,比如給上面的資料表a恢復之前的unique限制:
另外,限制為unique的列會自動新增唯一性索引。
primary key
primary key用來建立主鍵,主鍵用來標識資料表中資料的唯一性,每個資料表只能有一個主鍵,但是可以有多條unique規則,主鍵列不能包含null值,主鍵自動帶有unique規則。
比如:
主鍵同樣可以包含多個列,也可以對主鍵規則命名(但是對主鍵命名的意義不大,因為表只有一個主鍵,刪除primary key時也不提供主鍵名這個引數)、刪除主鍵規則等等:
mysql> create table a (id int(5), op varchar(15), constraint record_id primary key(id));
Query OK, 0 rows affected (0.03 sec)
mysql> show create table a;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------+
| a | CREATE TABLE `a` (
`id` int(5) NOT NULL,
`op` varchar(15) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> alter table a drop primary key;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table a;
+-------+-------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------+
| a | CREATE TABLE `a` (
`id` int(5) NOT NULL,
`op` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> alter table a add primary key (id, op);
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table a;
+-------+------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------+
| a | CREATE TABLE `a` (
`id` int(5) NOT NULL,
`op` varchar(15) NOT NULL,
PRIMARY KEY (`id`,`op`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
foreign key
foreign key用來在兩個表之間建立關聯,foreign key必須指向另一個表的具有唯一性約束的列(一個或多個),比如:
mysql> select * from a;
+-----+-----+---------------+
| id1 | id2 | op |
+-----+-----+---------------+
| 1 | 1 | coordinate 1,1 |
+-----+-----+---------------+
1 row in set (0.00 sec)
mysql> show create table a;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| a | CREATE TABLE `a` (
`id1` int(5) NOT NULL,
`id2` int(5) NOT NULL,
`op` varchar(15) DEFAULT NULL,
PRIMARY KEY (`id1`,`id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> create table b (ida1 int(5), ida2 int(5), record varchar(20), constraint fb foreign key (ida1, ida2) references a(id1, id2));
Query OK, 0 rows affected (0.04 sec)
mysql> show create table b;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| b | CREATE TABLE `b` (
`ida1` int(5) DEFAULT NULL,
`ida2` int(5) DEFAULT NULL,
`record` varchar(20) DEFAULT NULL,
KEY `fb` (`ida1`,`ida2`),
CONSTRAINT `fb` FOREIGN KEY (`ida1`, `ida2`) REFERENCES `a` (`id1`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> insert into b values (1, 2, "insert 1,2");
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`lmz2`.`b`, CONSTRAINT `fb` FOREIGN KEY (`ida1`, `ida2`) REFERENCES `a` (`id1`, `id2`))
mysql> insert into b values (1, 1, "insert 1,1");
Query OK, 1 row affected (0.01 sec)
一個數據表中,可以含有多個外來鍵,所以刪除外來鍵時需要提供外來鍵規則的名字:
也可以使用alter table
語句為已經建立的資料表新增外來鍵,比如針對上面的資料表b:
default
default用來給資料表的某一列新增預設值,比如:
刪除某一列的default規則:
為已經存在的表的某一列設定default規則:
auto_increment
auto_increment用來限制主鍵列的資料是自動增加的,預設從1開始增加,MySQL中auto_increment必須用在主鍵中,比如:
mysql> create table g (id int(5) not null auto_increment, op varchar(10), primary key (id));
Query OK, 0 rows affected (0.04 sec)
mysql> insert into g (op) values ("insert");
Query OK, 1 row affected (0.00 sec)
mysql> select * from g;
+----+--------+
| id | op |
+----+--------+
| 1 | insert |
+----+--------+
1 row in set (0.00 sec)
資料型別
整型
integer(size)
/int(size)
、tinyint(size)
、smallint(size)
、mediumint(size)
、bigint(size)
,其中size表示顯示寬度,顯示時預設右對齊。
如果設定了zerofill
,右對齊時不足的位數用零填充,超過的位數正常顯示。比如:create table n (v tinyint(5) zerofill unsigned);
只允許插入無符號整數(0~255),且顯示時右對齊、零填充:
常用整型資料型別如下:
型別 | 儲存空間 | 最小值 | 最大值 |
---|---|---|---|
(位元組) | (Signed/Unsigned) | (Signed/Unsigned) | |
tinyint | 1 | -128 | 127 |
0 | 255 | ||
smallint | 2 | -32768 | 32767 |
0 | 65535 | ||
mediumint | 3 | -8388608 | 8388607 |
0 | 16777215 | ||
int | 4 | -2147483648 | 2147483647 |
0 | 4294967295 | ||
bigint | 8 | -9223372036854775808 | 9223372036854775807 |
0 | 18446744073709551615 |
浮點型
decimal(precision, scale)
/numeric(precision, scale)
,其中precision規定有效數字位數,scale規定小數點後數字長度,比如:
v這列數字的範圍是-999.99~999.99,如果插入資料的小數點後數字長度超過2,會自動四捨五入後插入。
字串型
char(size)
儲存最大長度固定的字串,varchar(size)
儲存變長字串。char(size)
型別固定佔用size個字元的空間,不足的右側補空格,輸出時移除右側空格(除非設定了PAD_CHAR_TO_FULL_LENGTH
,輸出時才不會移除右側空格),size的範圍是0~255。varchar(size)
型別size的範圍是0~65535,如果長度不超過255,需要額外1位元組記錄長度,如果超過255,需要額外兩位元組記錄長度。
set sql_mode=""
用來恢復char(size)
型別輸出時刪除右側空格的預設行為。
時間型
date
用於儲存YYYY-MM-DD格式的日期,比如:
timestamp
用於儲存YYYY-MM-DD HH:mm:ss格式(也支援YYMMDD、YYYYMMDD、YYMMDDHHMMSS、YYYYMMDDHHMMSS)的時間戳,範圍[1970-01-01 00:00:00~2037-12-31 23:59:59]
,比如在資料庫中設定初次插入時間及更新時間:
mysql> create table record (id int(5), op char(10), st timestamp default current_timestamp, lm timestamp default current_timestamp on update current_timestamp);
Query OK, 0 rows affected (0.05 sec)
mysql> insert into record (id, op) values (1, "insert");
Query OK, 1 row affected (0.01 sec)
mysql> select * from record;
+------+--------+---------------------+---------------------+
| id | op | st | lm |
+------+--------+---------------------+---------------------+
| 1 | insert | 2016-09-12 08:10:41 | 2016-09-12 08:10:41 |
+------+--------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql> update record set op="update" where id=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from record;
+------+--------+---------------------+---------------------+
| id | op | st | lm |
+------+--------+---------------------+---------------------+
| 1 | update | 2016-09-12 08:10:41 | 2016-09-12 08:11:05 |
+------+--------+---------------------+---------------------+
1 row in set (0.00 sec)
datetime
也可以表示時間戳,且表示的範圍為[1000-01-01 00:00:00~9999-12-31 23:59:59]
。
time
用來儲存HH:MM:SS格式的日期,表示範圍為[-839:59:59~839:59:59]
。
year
用來儲存時間中“年”的部分,支援兩位或4位數字。平時最好使用4位數字以免造成歧義,比如:
修改資料表屬性
alter語句可以修改已經存在的資料表的屬性,如主鍵、外來鍵、索引、列等等。比如為資料表新增新的列:
modify <column_name> <type>
語句可以修改某一列的屬性:
drop <column_name>
語句可以刪除一列:
drop table <table_name>
刪除名為<table_name>
的分組。
show create table <table_name>
檢視名為<table_name>
的表結構。
DML
包括查詢、更新、插入、刪除資料等操作:
insert into
向資料表中插入資料,語法格式為insert into <table_name> values (value_1, value_2, ...)
或者指定為某幾列賦值insert into <table_name> (column_x, column_y, ...) values (value_x, value_y, ...)
。
select
從資料表中查詢資料,結果儲存在一個結果表(結果集)中,語法格式為select * from <table_name>
或者select <column_name1, column_name2, ...> from <table_name>
。
對結果集的操作
結果集支援更多的操作以實現對查詢結果的更多維度地分析。
select distinct
在查詢結果中去重:
控制顯示數目
在select語句的後面增加limit <n>
可以限制顯示前n條資料,limit <start>, <length>
限制從start位置(下標從0開始)開始,length條資料。
where
限制更精細的查詢條件,格式為<column_name> 運算子 值
,其中運算子支援列表如下:
操作符 | 描述 |
---|---|
= | 等於 |
<>(或!=) | 不等於 |
> |
大於 |
< | 小於 |
>= |
大於等於 |
<= | 小於等於 |
like | 搜尋簡單模式 |
rlike | 搜尋正則模式 |
in | 在某個列表中 |
between … and | 在某個範圍內 |
is null | 是NULL |
is not null | 不是NULL |
not | 否定 |
在書寫字面量時,字串應該用引號包圍,數值量不應該用引號包圍:
like
like操作符可以實現簡單的模糊匹配,%
匹配多個字元,_
匹配單個字元,比如:
mysql> select * from c;
+------+
| v |
+------+
| lmz |
| mars |
| loo |
| sus |
+------+
4 rows in set (0.00 sec)
mysql> select * from c where v like "l%";
+------+
| v |
+------+
| lmz |
| loo |
+------+
2 rows in set (0.02 sec)
mysql> select * from c where v like "l_o";
+------+
| v |
+------+
| loo |
+------+
1 row in set (0.00 sec)
如果確實要查詢%
或_
字元本身,可以配合escape <char>
設定一個轉義開關後對其進行轉義,比如select * from c where v like "lm/%%" escape "/"
在c中匹配v列以lm%
開頭的字串。
rlike
rlike操作符用來實現正則匹配,語法與標準正則表示式相同。
in
in操作符用來在一個括號包圍,逗號分隔的列表中查詢指定的值,比如:
between …and
between …and操作符用來在指定範圍內查詢資料,可以是數值、字串、日期等,區間範圍左閉右開:
is null
is null判斷該列的某一行的值為NULL(即沒有賦值)。NULL的判斷不能使用=
運算子。
is not null
is not null判斷該列的某一行的值不為NULL。
not
not操作符用來翻轉查詢條件的語義,實現反向查詢,比如:
組合查詢條件
可以使用and或者or組合查詢條件,也可以使用括號實現查詢條件的複雜組合。
結果排序
使用order by <column_name> [DESC | ASC]
可以對結果排序,DESC表示降序,ASC表示升序(預設):
設定別名
資料表名字過長時可以設定別名:select <column> from <table_name> as <table_alias>
,比如:
為列名設定別名,會影響結果集的顯示:
結果組合
比如如下兩個資料表:
mysql> select * from staff;
+------+-------+------+
| id | name | jid |
+------+-------+------+
| 1 | mars | 1 |
| 2 | loo | 2 |
| 3 | suson | NULL |
+------+-------+------+
3 rows in set (0.01 sec)
mysql> select * from occupation;
+------+-------------+
| id | description |
+------+-------------+
| 1 | teacher |
| 2 | nurse |
| 3 | doctor |
+------+-------------+
3 rows in set (0.00 sec)
查詢staff表中每個人的工作,可以使用:
mysql> select s.name, o.description as job from staff as s, occupation as o where s.jid=o.id;
+------+---------+
| name | job |
+------+---------+
| mars | teacher |
| loo | nurse |
+------+---------+
2 rows in set (0.00 sec)
或者可以使用join語句。
join
join用於根據多個表中的列之間的關係,從這些表中查詢資料,注意查詢條件的語句是用on不是where:
join也可以寫成inner join。
left join
left join用於列出左側表格中的所有資料,及右側表格符合匹配條件的資料(如果有的話),比如:
right join
right join用於列出右側表格中的所有資料,及左側表格符合匹配條件的資料(如果有的話),比如:
union
union用來組合兩個select語句的查詢結果,要求結果集中欄位個數相同,每個欄位的型別相同。會對重複結果去重,且查詢結果的列名以前面的命名為準,比如有如下兩個資料表:
mysql> select * from occupation;
+------+-------------+
| id | description |
+------+-------------+
| 1 | teacher |
| 2 | nurse |
| 3 | doctor |
+------+-------------+
3 rows in set (0.00 sec)
mysql> select * from job;
+------+--------+
| id | name |
+------+--------+
| 1 | driver |
| 2 | chef |
| 3 | doctor |
+------+--------+
3 rows in set (0.00 sec)
使用union查詢結果如下:
union all
上面的兩張資料表,使用union all查詢結果如下:
MySQL不支援full join,所以可以配合union(根據業務場景可能會使用union all)+lef join+right join實現。
備份結果集
將查詢結果備份到一個新表中的方法是:
將查詢結果備份到其他資料庫中的另一張表中的方法是:
update:更新資料表中某一行資料,語法格式
update <table_name> set <column_1> = <value_1>[, <column_2> = <value_2>, ...] where <column_name> 運算子 <value>
:delete:刪除資料表中的資料,語法格式為
delete from <table_name> where <column_name> 運算子 <value>
。刪除所有行的語法為delete from <table_name>
。- truncate:清空資料表中的資料,語法格式為
truncate table <table_name>
,與delete的不同之處在於,該操作不記錄日誌,是無法回滾的,效率更高,而delete操作是可以回滾的,記錄日誌,效率稍低。
優化查詢速度
在經常做查詢操作的資料表的那些列上建立索引可以優化查詢速度。
查詢索引
使用show index from <table_name>
或者show keys from <table_name>
可以查詢某個資料表上建立了哪些索引。
建立索引
- 在建立資料表時建立索引:
使用unique key <index_name> (column_1, ..)
或者unique index <index_name> (column_1, ..)
可以建立唯一性索引,即建立索引的這一列或這幾列不允許重複(最好同時限制not null約束,可以避免同時存在多個NULL的情況,unique約束無法限制多個NULL的情況)。
使用key <index_name> (column_1, ..)
或者index <index_name> (column_1, ..)
可以建立索引。
- 在已經建立的資料表上建立索引
- 為已經建立的資料表新增索引
刪除索引
如果覺得我的文章對您有幫助,歡迎關注我(CSDN:Mars Loo的部落格)或者為這篇文章點贊,謝謝!
相關推薦
43.結構化查詢語言SQL及MySQL(一)
簡介 SQL是ANSI標準下訪問和處理資料庫的結構化查詢語言。SQL可以在各個RDBMS(關係型資料庫管理系統,如MySQL、Microsoft Access)中使用,各個RDBMS也有自己獨有的擴充套件。 RDBMS中,不同資料儲存在不同的資
mysql 資料庫快速入門 結構化查詢語言SQL
目錄 結構化查詢語言SQL 標準支援 SQL的影響 語言特點 語句結構 結構化查詢語言SQL 結構化查詢語言(Structured Query Language)簡稱SQL。 一種特殊目的的程式語言:是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更
數據庫入門4 結構化查詢語言SQL
IT 相同 ber sql 方法 str 時也 程序設計 需要 知識內容: 1.SQL介紹 2.常用SQL命令 3.SQL語句練習 一、SQL介紹 1.什麽是SQL 結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的
SQL結構化查詢語言
cit sql結構 delet having 處理 ner transacti 檢索 order 一: 數據查詢語言( DQL:Data Query Language): 其語句,也稱為“數據檢索 語句”,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字 S
SQL結構化查詢語言分類介紹
sql結構化查詢語言分類介紹SQL結構化查詢語言分類介紹SQL:結構化查詢語言,它是一種對關系型數據進行定義和操作的語言方法。SQL結構化查詢語言包含6個部分:一、數據查詢語言(DQL)DQL全稱Data Query Language,其語句也稱“數據檢索語句”,作用是從表中獲取數據,確定數據怎樣在應用程序給
SQL -結構化查詢語言的發展史
Mysql linux DDL:數據操作語言INSERTDELETESELECTUPDATEDML:數據定義語言CREATEDROPALTERDCL:數據控制語言GRANTREVOKE RDB對象:庫、表、索引、視圖、用戶、存儲過程、存儲函數、觸發器、事件調度器。 約束: 域約束:數據
SQL 數據庫結構化查詢語言
sql 數據庫對象 控制語句 許可 結構 數據完整性 ora sqlserve C# 1、數據庫 常見數據庫 MySQL:開源免費的數據庫,小型的數據庫。 Oracle:收費的大型數據庫,Oracle 公司的產品 DB2:IBM 公司收費的數據庫,常應用在銀行系統中
Web安全學習筆記(八):SQL-結構化查詢語言
.com 時也 create 取數據 數據操作 date 簡單的 esc 標準 SQL概述: 結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系數據庫
SQL(結構化查詢語言)簡介
一、結構化查詢語言簡介 結構化查詢語言(Structured Query Language)簡稱SQL, 是操作和檢索關係型資料庫的標準語言,20世紀70年代由IBM公司開發,目前應用於各種關係型資料庫。 二、SQL的發展 1974年首次提出,當時叫SEQUEL 1980年改名為SQ
SQL 結構化查詢語言
導讀 MySql是我們常用的資料庫,javaEE常用幾款(Oracle,PostgreSQL,DB2或IBM),SQLite是用於嵌入式裝置裡的小型資料庫,例如Android或IOS,而掌握SQL語句,就相當於掌握了所有的常見關係化資料庫,需要同學們重點掌握以
資料庫,結構化查詢語言的四種語言
1.DDL(Data Definition Language)資料庫定義語言statements are used to define the database structure or schema. DDL是SQL語言的四大功能之一。 用於定義資料庫的三級結構,包括外模式、概念模式、內模式及其相互之
常用SQL命令彙總(一)-增刪改及單表查詢
一、資料庫及表的建立 資料庫操作: 1、顯示所有資料庫:Show databases; 2、建立資料庫:Create database 資料庫名; 3、刪除資料庫:Drop database 資料庫名; 表操作: CREATE TABLE 表名( 屬性名 資料表
mysql大數據備份及恢復(一)
日誌記錄 數據恢復 insert 數據庫mysql values Mysql大數據備份和恢復一MySQL備份一般采取全庫備份、日誌備份;MySQL出現故障後可以使用全備份和日誌備份將數據恢復到最後一個二進制日誌備份前的任意位置或時間;mysql的二進制日誌記錄著該數據庫的所有增刪改的操
實現自定義查詢的數據庫設計及實現(一)
bre 名稱 審批流程 work 數據庫名 需要 自定義查詢 perm 枚舉 需求 先說一下需求:實現用戶自定義的查詢,用戶可以自定義要查詢的列、自定義條件條件、自定義排序。除了查詢使用外,還可以使用於各個需要根據條件進行約束的業務,如權限; 本設計和實現,很大部分是通過數
專利:結構化大數據通信協議(2)
結構化大數據通信協議說明2:數據的唯一性是實現“數據全球通”的基礎在班、組這樣的小環境中可以用每個人的姓名而區分出每一個人,然而在全國範圍內,由於人數太多,重名的很多,因此僅靠姓名就不能準確無誤地識別出每一個人。大數據時代以前的關系數據庫中的數據只是應用於某個機構內部,因此各個數據就容易識別,然而如果把關系數
初始化MySql(一)
文件 組合 完成 ima 配置文件 啟動 啟動mysql ini文件 組織 什麽是數據? 數據(data):是經過人們對客觀事務的觀察和總結,用於表示客觀事務的未經加工的原始素材 數據種類:視頻,圖片,歌曲等 為什麽要使用數據庫: 存儲數據的
【MySQL資料庫】效能優化之索引及優化(一)
一、Mysql效能優化之影響效能的因素 1.商業需求的影響 不合理的需求造成的資源投入產出,這裡就用一個看上去很簡單的功能分析。需求:一個論壇帖子的總量統計,附加要求:實時更新。從功能上看來是非常容易實現的,執行一條select count(*)from表名就可以得到結果,但是如果我們採
結構化機器學習專案——機器學習(8)
1.ML策略 當我們最初得到一個深度神經網路模型時,我們可能希望從很多方面來對它進行優化,例如: Collect more data Collect more diverse training set Train algorithm longer
迴圈、資料結構及函式(一)
List(列表)結構 #列表名稱=[元素1,元素2,......] list1 = [1,2,3,4] list2 = ["banana","apple","orange"] list3 = [1,"banana",True] 各個元素資料型別可以相同,也可以不同。
從 SQL Server 到 MySQL (一):異構資料庫遷移
背景 滬江成立於 2001 年,作為較早期的教育學習網站, 當時技術選型範圍並不大: Java 的版本是 1.2,C# 尚未誕生,MySQL 還沒有被 Sun 收購, 版本號是 3.23。 工程師們選擇了當時最合適的微軟體系,並在日後的歲月裡, 逐步從 ASP 過度到 .net,資料庫也跟隨 SQL Ser