天天看點

Mysql簡介及sql語句

一、資料庫的概述

Mysql: DBMS(資料庫管理系統 DataBase Manager System)

概述:資料庫(Database)是按照資料結構組織、存儲和管理資料的倉庫,它産生于距今六十多年前,資料庫有很多種類型,從最簡單的存儲有各種資料的表格到能夠進行海量資料存儲的大型資料庫系統,在各個方面得到了廣泛的應用。在資訊化社會,充分有效地管理和利用各類資訊資源,是進行科學研究和決策管理的前提條件。資料庫技術是管理資訊系統、辦公自動化系統、決策支援系統等各類資訊系統的核心部分,是進行科學研究和決策管理的重要技術手段。

二、資料庫的分類

關系型資料庫: sql資料庫

非關系型資料庫: nosql資料庫,not only sql資料庫

關系型資料庫:資料擁有固定的存儲結構,通過庫–表--行–列的方式存儲,存儲時會有表的結構化關系,過程如下:解析sql語句–連接配接層–磁盤存取–結構化成表,;

優勢:

1.容易了解,二維表的結構非常貼近現實世界,二維表格,容易了解;

2.使用友善,通用的sql語句使得操作關系型資料庫非常友善;

3.易于維護,資料庫的ACID屬性,大大降低了資料備援和資料不一緻的機率;

瓶頸:

1.海量資料的讀寫效率低,對于網站的并發量高,往往達到每秒上萬次的請求,對于傳統關系型資料庫來說,硬碟I/O是一個很大的挑戰。

2.高擴充性和可用性,在基于web的結構中,資料庫是最難以橫向拓展的,當一個應用系統的使用者量和通路量與日俱增的時候,資料庫沒有辦法像web Server那樣簡單的通過添加更多的硬體和服務節點來拓展性能和負載能力。

Mysql簡介及sql語句

關系型資料庫到非關系型資料庫的演變:關系型資料庫的最大優點就是事務的一緻性,這個特性,使得關系型資料庫中可以适用于一切要求一緻性比較高的系統中。比如:銀行系統。但是在大部分網頁應用中,對這種一緻性的要求不是那麼的嚴格,允許有一定的時間間隔,是以關系型資料庫這個特點不是那麼的重要了。相反,關系型資料庫為了維護一緻性所付出的巨大代價就是讀寫性能比較差。而像微網誌、facebook這類應用,對于并發讀寫能力要求極高,關系型資料庫已經無法應付。是以必須用一種新的資料結構存儲來替代關系型資料庫。是以非關系型資料庫應用而生。

非關系型資料庫,就是為了加快用戶端的通路速度才出現的,因為所有的非關系型資料庫都是盡可能的将資料放到記憶體當中;非關系型資料庫是以key:value的形式存儲的;

非關系型資料庫:NoSQL主要指那些非關系型的、分布式的,主要代表MongoDB,Redis、CouchDB。NoSQL提出了另一種理念,以鍵值來存儲,且結構不穩定,每一個元組都可以有不一樣的字段,這種就不會局限于固定的結構,可以減少一些時間和空間的開銷。使用這種方式,為了擷取使用者的不同資訊,不需要像關系型資料庫中,需要進行多表查詢。僅僅需要根據key來取出對應的value值即可,是以避免了關系型資料庫複雜的查詢關系,可以大大增加查詢的效率;

變量名=變量值

鍵(key)=值(value) name=dgf name=1

三、Mysql的概述:

概述:MySQL 是一個關系型資料庫管理系統,由瑞典 MySQL AB 公司開發,目前屬于 Oracle 旗下公司。是一個真正的多使用者、多線程SQL資料庫伺服器。SQL(結構化查詢語言)是世界上最流行的和标準化的資料庫語言。MySQL是以一個客戶機/伺服器結構的實作,它由一個伺服器守護程式mysqld和很多不同的客戶程式和庫組成。 SQL是一種标準化的語言,它使得存儲、更新和存取資訊更容易;

四、Mysql存儲原理

Mysql整體架構:

Mysql簡介及sql語句

1.連接配接池:最上層負責和用戶端進行連接配接,比如jdbc,odbj這樣的資料庫連接配接的API,在這一層有連接配接池的概念,類似于線程池,連接配接池可以同時處理很多個資料庫請求。同時這一層有SSL的安全概念,可以確定連接配接是安全的;

2.SQL接口:當SQL語句進入MySQL後,會先到SQL接口中,這一層是封裝層,将傳過來的SQL語句拆散,将底層的結果封裝成SQL的資料格式;

3.解析器:這一層負責将SQL語句進行拆分,驗證,如果語句有問題那麼就傳回錯誤,如果沒問題就繼續向下執行;

4.優化器:對SQL查詢的結果優化處理,産生多種執行計劃,最終資料庫會選擇最優化的方案去執行,盡快返會結果。比如select a,b from c where d。在這裡會先查詢c表中符合d的資料并将他們的ab項進行投影,傳回結果,并不會直接把整張表查出來;

5.緩存:對要查詢的SQL語句進行hash後緩存,如果下一次是相同的查詢語句,則在SQL接口之後直接傳回結果;

6.存儲引擎:MySQL有很多種存儲引擎,每一種存儲引擎有不同的特性,他們負責組織檔案的存放形式,位置,通路檔案的方法等等。比較常用的有innoDB,MyISAM,MEMORY等;

7.檔案系統:真正存放實體檔案的機關;

五、案例:centos 7搭建Mysql 5.7

案例環境:

系統 系統
ip 192.168.1.1
主機名 www.zps.com
所需軟體 mysql-5.7.12.tar.gz 和 boost_1_59_0.tar.gz
硬體
CPU核心:2 記憶體:4G

Mysql下載下傳方式:

https://downloads.mysql.com/archives/community/

Mysql簡介及sql語句

案例步驟:

下載下傳安裝Mysql軟體程式

需要使用windows下載下傳,不能使用linux下載下傳

wget http://dev.mysql.com/Downloads/MySQL-5.7/mysql-5.7.12.tar.gz
wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download
           

點選下載下傳mysql-5.7.12.tar.gz

提取碼:bvab

點選下載下傳boost_1_59_0.tar.bz2

提取碼:qzdf

Mysql簡介及sql語句

修改主機名

hostname www.zps.com

vi /etc/hosts
192.168.1.1 www.zps.com
           
yum -y remove mysql-* boost-*
rpm -qa mysql
rpm -qa boost
yum -y install gcc gcc-c++ ncurses bison libgcrypt perl cmake ncurses-devel
tar -jxvf boost_1_59_0.tar.bz2
mv boost_1_59_0 /usr/local/boost/
groupadd mysql
useradd -r -g mysql mysql
tar zxvf mysql-5.7.12.tar.gz -C /usr/src/
cd /usr/src/mysql-5.7.12/
##編譯多次時,需要删除CMAKE的緩存,rm -rf /usr/src/mysql-5.7.12/CMakeCache.txt
cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DSYSCONFDIR=/etc
           

注釋:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql                [MySQL安裝的根目錄]
-DMYSQL_DATADIR=/mydata/mysql/data                     [MySQL資料庫檔案存放目錄]
-DDEFAULT_CHARSET=utf8                                 [設定預設字元集為utf8]
-DDEFAULT_COLLATION=utf8_general_ci                    [設定預設字元校對]
-DMYSQL_TCP_PORT=3306                                  [MySQL的監聽端口]
-DMYSQL_USER=mysql                                     [MySQL使用者名]    
-DWITH_MYISAM_STORAGE_ENGINE=1                         [安裝MySQL的myisam資料庫引擎]
-DWITH_INNOBASE_STORAGE_ENGINE=1                       [安裝MySQL的innodb資料庫引擎]
-DWITH_ARCHIVE_STORAGE_ENGINE=1                        [安裝MySQL的archive資料庫引擎]
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 					   [安裝MySQL的blackhole資料庫引擎]
-DWITH_MEMORY_STORAGE_ENGINE=1                         [安裝MySQL的memory資料庫引擎]
-DENABLE_DOWNLOADS=1                                   [編譯時允許自主下載下傳相關檔案]
-DDOWNLOAD_BOOST=1 									   [允許下載下傳BOOST]
-DWITH_BOOST=/usr/local/boost 						   [指定系統中存在的BOOST]

-DSYSCONFDIR=/etc                                      [MySQL配置檔案所在目錄]
-DWITH_READLINE=1                                      [MySQL的readline library]
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock            [MySQL的通訊目錄]
-DENABLED_LOCAL_INFILE=1                               [啟用加載本地資料]
-DWITH_PARTITION_STORAGE_ENGINE=1  					   [啟動mysql的分區存儲結構]
-DEXTRA_CHARSETS=all                                   [使MySQL支援所有的擴充字元]
-DWITH_DEBUG=0                                         [禁用調試模式]
-DMYSQL_MAINTAINER_MODE=0 
-DWITH_SSL:STRING=bundled                              [通訊時支援ssl協定]
-DWITH_ZLIB:STRING=bundled                             [允許使用zlib library]
           
make -j `cat /proc/cpuinfo | grep processor| wc -l`
make install
ls /usr/local/mysql
           

優化調整Mysql程式

chown -R mysql:mysql /usr/local/mysql
cp /usr/src/mysql-5.7.12/support-files/my-default.cnf /etc/my.cnf
cp /usr/src/mysql-5.7.12/support-files/mysql.server /etc/init.d/
chmod +x /etc/init.d/mysql.server
           

編寫服務控制腳本

cat <<END >>/usr/lib/systemd/system/mysqld.service
[Unit]
Description=mysqldapi
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/mysql/logs/mysqld.pid
ExecStart=/etc/init.d/mysql.server start
ExecReload=/etc/init.d/mysql.server restart
ExecStop=/etc/init.d/mysql.server stop
PrivateTmp=Flase

[Install]
WantedBy=multi-user.target
END
           

注解:

echo "export PATH=$PATH:/usr/local/mysql/bin/" >>/etc/profile
source /etc/profile
           

初始化Mysql資料庫服務

注解:

--initialize-insecure 				##禁用mysql的密碼政策(密碼複雜性等),--initializeaize是開啟密碼政策,自動生成密碼在mysqld.log檔案中
--user=mysql 						##運作的賬戶
--basedir=/usr/local/mysql 			##mysql的安裝位置
--datadir=/usr/local/mysql/data		##mysql資料庫服務資料的實體存放路徑
           
cat <<END >/etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character_set_server=utf8
init_connect='SET NAMES utf8'
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/logs/mysqld.pid
skip-name-resolve
END
           

注解:

[mysqld]					                            ##聲明區域
basedir = /usr/local/mysql			                    ##mysql的安裝位置
datadir = /usr/local/mysql/data		                    ##mysql的實體檔案存放位置
port = 3306						                        ##mysql服務監聽的端口
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES		##mysql的模式
character_set_server=utf8			                    ##字元集
init_connect='SET NAMES utf8'		
log-error=/usr/local/mysql/logs/mysqld.log			    ##指定日志檔案位置
pid-file=/usr/local/mysql/logs/mysqld.pid			    ##指定運作服務所産生的pid檔案位置
skip-name-resolve					                    ##跳過mysql的域名反向解析
           
mkdir /usr/local/mysql/logs
chown mysql:mysql /usr/local/mysql/logs/
systemctl start mysqld
systemctl enable mysqld
netstat -utpln |grep mysqld
           

測試連接配接通路資料庫

mysqladmin  -u root -p password "123456"            ##登入mysql設定密碼
mysql -uroot -p123456
mysql> exit
           

報錯:

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
           

解決方法:

mysqladmin -h localhost -uroot password "123456"
           

六、Sql語句操作之增删改查

Sql語句分類:

DDL:資料定義語言,用來建立資料庫,資料對象和定義其列,如create、alter、drop;

DML:資料操縱語言,用來查詢、插入、删除、修改資料庫中的資料,如select、insert、update、delete;

DCL:資料控制語言,用來控制資料庫元件的存取許可,存取權限等,如commit、rollback、grant、revoke;

資料記錄類型:

日期:

Mysql簡介及sql語句

小數類型:

Mysql簡介及sql語句

字元串:

Mysql簡介及sql語句

SQL

什麼是SQL?

Structured Query Language:結構化查詢語言

Sql是執行在用戶端(windows在指令行下執行,linux在終端執行)下或者通過java代碼執行在JDBC

打開用戶端并登陸mysql

linux下在任何位置直接打開終端即可

windows下使用各種用戶端打開 登陸mysql指令 直接在終端下執行以下代碼 然後輸入密碼

mysql -uroot -p

退出:

exit

SQL語句規範

1.以;(分号)結尾

2.關鍵字之間有空格 通常一個空格 但是有多個也沒問題

3.sql語句中可以添加換行

4.SQL 不區分大小寫

資料庫相關SQL

1、檢視所有資料庫指令:

2、建立資料庫 通常一個項目隻對應1個資料庫 格式:create database 資料庫名稱;

create database db1;
指定字元集的建立格式 :create database 資料庫名稱 CHARACTER SET utf8;
  create database db2 character set gbk;
           

3、檢視資料庫詳情 -格式:show create database 資料庫名稱;

4、删除資料庫 -格式:drop database 資料庫名稱;

5、選中資料庫

表相關SQL

什麼是表

-表是資料庫中的資料組成機關 類似于Java中的對象 表中的字段 對應對象中的屬性

建立表

格式: create table 表名 (字段1名 字段類型,字段2名 字段類型);
create table person (name varchar(10),age int);
           

建立表的原理:

-在用戶端中寫完建立表的sql語句後用戶端會把sql語句交給DBMS(MySql)DBMS解析後 會在資料庫中建立語句中的表 和表中的字段

檢視所有表

檢視表結構

-格式:show create table 表名;
show create table person;
-格式: desc 表名
desc person;
           

表的引擎

InnoDB:支援資料庫的進階處理包括 事物 外鍵等 預設是innodb

Myisam:隻支援資料的基本存儲

建立表時指定表的字元集 和 引擎

-格式
create table person (id int,name varchar(10)) engine=myisam charset=utf8;
           

練習:建立5個資料庫 在每個資料庫裡面建立1個表 然後删除資料庫練習

建立學生表

create table student (
    id int,
    name varchar(10),
    chinese int,
    math int,
    english int
);
           

對已經建立好的表進行修改

1、修改表名稱 -格式: rename table 原名 to 新名;

2、修改表的屬性 -格式: alter table 表名 engine=myisam charset=gbk;

3、添加表的字段 -在最後添加 -格式:alter table 表名 add age int;

alter table student add age int;
   -在最前面添加 -格式:alter table 表名 add fatherAge int first;
alter table student add fatherAge int first;
   -在某個字段之後添加 -格式:alter table 表名 add fatherName varchar(10) after fatherAge;
alter table student add fatherName varchar(10) after fatherAge;
           

4、删除表字段 -格式: alter table 表名 drop 字段名;

5、修改字段名和類型 -格式: alter table 表名 change 原字段名 新字段名 新字段類型;

6、修改類型和順序 -格式1: alter table 表名 modify 字段名稱 新字段類型 after 字段名 -格式2: alter table 表名 modify 字段名稱 新字段類型 first

alter table student modify fatherAge int first; 
alter table student modify fatherAge int after id; 
alter table dgf modify 姓名 varchar(20);
           

删除表

-格式: drop table 表名
drop table student;
           

七、練習:

1.建立一個hero表 有 id name type 三個字段

2. 修改hero表的屬性 引擎為myisam 編碼屬性為utf8

3. 給hero表添加一個money int 字段 添加在name字段的後面

4. 修改type字段 名稱修改為 hero_type varchar(30)

5. 修改hero表名為heros

6. 修改name字段到最後面

7. 把money字段删除

8. 删除hero表

資料相關SQL

create table student(
        id int,
        name varchar(20),
        chinese int,
        math int,
        english int
);
           

1、插入語句 -全表插入格式:insert into 表名 values(值1,值2,值3…); 全表插入values後面的值的數量和順序必須和表中字段的數量和順序一緻

insert into student values(1,'lisi',18,26,88);
-指定字段插入格式:insert into 表名 (字段名1,字段名2)values(值1,值2);
insert into student (name,math)values('張三',90);
-批量插入
-全表批量 
insert into student values(10,'劉備',10,20,30),(11,'關羽',12,34,22),(12,'張飛',3,4,2); 
-指定字段批量
insert into student (id,name,english)values(20,'孫悟空',0),(21,'豬八戒',90),(22,'沙師弟',5);
           

2、查詢語句 -格式: select 字段1, 字段2,字段3… from 表名 -如果字段位置寫* 代表查詢所有的字段

select * from student;
select id,name,math from student;
           

3、更新(修改)語句 -修改全表格式:update 表名 set math=100;

update student set math=100; 
-添加條件修改格式: update 表名 set math=50 where id=10;
update student set math=50 where id=10;
           

4、删除語句 -删除指定條件的資料格式:delete from 表名 where id=10;

delete from student where id=10;
delete from student where chinese is null;
-删除表中所有資料 
delete from student;
           

Mysql5.7安裝完成之後,預設4個資料庫

information_schema:information_schema是一個資訊資料庫,它儲存着關于MySQL伺服器所維護的所有其他資料庫的資訊。(如資料庫名,資料庫的表,表欄的資料類型與通路權限等。)

Mysql:主要負責存儲資料庫的使用者、權限設定、關鍵字等mysql自己需要使用的控制和管理資訊

performance_schema:主要用于收集資料庫伺服器性能參數。并且庫裡表的存儲引擎均為PERFORMANCE_SCHEMA,而使用者是不能建立存儲引擎為PERFORMANCE_SCHEMA的表

Sys:Sys庫所有的資料源來自:performance_schema。目标是把performance_schema的把複雜度降低,讓DBA能更好的閱讀這個庫裡的内容。讓DBA更快的了解DB的運作情況。

八、Mysql基本優化操作

1.忘記密碼:

vi /etc/my.cnf
[mysqld]
skip-grant-tables 					 ##添加該行,跳過密碼驗證
:wq
           
[[email protected] ~]# mysql			        ##登入後操作
mysql> use mysql;
Database changed
mysql> update user set authentication_string=password('123456') where user="root";
mysql> select Host,user,authentication_string from user;
+-----------+-----------+-------------------------------------------+
| Host      | user      | authentication_string(原mysql 5.5的password字段)                     |
+-----------+-----------+-------------------------------------------+
| localhost | root      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+-----------+-------------------------------------------+
2 rows in set (0.01 sec)
mysql> exit

[[email protected] ~]# vi /etc/my.cnf
[mysqld]
#skip-grant-tables					 ##注釋該行
:wq
           
mysql -uroot -p123456
mysql> exit
           

2.解決mysql亂碼問題:

vi /etc/my.cnf
[client]
default-character-set=utf8
           

九、Mysql存儲引擎的應用

1.檢視資料庫可以配置的存儲引擎類型:

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
           
Mysql簡介及sql語句

2.檢視表正在使用的存儲引擎:

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show table status where name='user';
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------+----------+----------------+-----------------------------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation | Checksum | Create_options | Comment                     |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------+----------+----------------+-----------------------------+
| user | MyISAM |      10 | Dynamic    |    2 |            132 |         264 | 281474976710655 |         4096 |         0 |           NULL | 2021-06-09 10:45:57 | 2021-06-09 10:48:13 | NULL       | utf8_bin  |     NULL |                | Users and global privileges |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------+----------+----------------+-----------------------------+
1 row in set (0.00 sec)
           
Mysql簡介及sql語句

3. 建立表并且指定存儲引擎

mysql> create database haha;
Query OK, 1 row affected (0.00 sec)

mysql> create table haha.table1(id int) engine=InnoDB;
Query OK, 0 rows affected (0.01 sec)

mysql> use haha;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show table status where name='table1';
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| Name   | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| table1 | InnoDB |      10 | Dynamic    |    0 |              0 |       16384 |               0 |            0 |         0 |           NULL | 2021-06-09 11:15:59 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
1 row in set (0.01 sec)
           

4.修改已經存在表的存儲引擎:

mysql> alter table haha.table1 engine=MyISAM;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show table status where name='table1';
+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
| Name   | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length  | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation       | Checksum | Create_options | Comment |
+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
| table1 | MyISAM |      10 | Fixed      |    0 |              0 |           0 | 1970324836974591 |         1024 |         0 |           NULL | 2021-06-09 11:20:12 | 2021-06-09 11:20:12 | NULL       | utf8_general_ci |     NULL |                |         |
+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
1 row in set (0.00 sec)
           

5.修改Mysql服務的預設存儲引擎:

[[email protected] ~]# vi /etc/my.cnf					##新添配置項
[mysqld]
default-storage-engine=MyISAM

[[email protected] ~]# systemctl restart mysqld
[[email protected] ~]# mysql -uroot -p123456
           
mysql> create table haha.table2(id int);
Query OK, 0 rows affected (0.01 sec)

mysql> use haha;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show table status where name='table2';
+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
| Name   | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length  | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation       | Checksum | Create_options | Comment |
+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
| table2 | MyISAM |      10 | Fixed      |    0 |              0 |           0 | 1970324836974591 |         1024 |         0 |           NULL | 2021-06-09 11:24:18 | 2021-06-09 11:24:18 | NULL       | utf8_general_ci |     NULL |                |         |
+--------+--------+---------+------------+------+----------------+-------------+------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
1 row in set (0.00 sec)
           

十、Mysql配置檔案詳解

[[email protected] ~]# vi /etc/my.cnf
[mysqld]

########basic settings########
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character_set_server=utf8
init_connect='SET NAMES utf8'
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/logs/mysqld.pid
user = mysql
symbolic-links=0
server-id = 11
#bind_address = 192.168.100.101
autocommit = 1
skip_name_resolve = 1
max_connections = 800
max_connect_errors = 100
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
join_buffer_size = 128M
tmp_table_size = 128M
tmpdir = /dev/shm
max_allowed_packet = 16M
interactive_timeout = 60
wait_timeout = 60
read_buffer_size = 16M
read_rnd_buffer_size = 32M
sort_buffer_size = 32M

########log settings########
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/logs/mysql-slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
long_query_time = 1
min_examined_row_limit = 100

########replication settings########
#master_info_repository = TABLE
#relay_log_info_repository = TABLE
log_bin = /usr/local/mysql/logs/mysql-bin
#sync_binlog = 4
gtid_mode = on
enforce_gtid_consistency = 1
#log_slave_updates
binlog_format = row
#relay_log = /usr/local/mysql/logs/mysql-relay.log
#relay_log_recovery = 1
#binlog_gtid_simple_recovery = 1
#slave_skip_errors = ddl_exist_errors

########innodb settings########
innodb_page_size = 16K
innodb_buffer_pool_size = 4G
#innodb_buffer_pool_instances = 8
#innodb_buffer_pool_load_at_startup = 1
#innodb_buffer_pool_dump_at_shutdown = 1
#innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
#innodb_io_capacity = 4000
#innodb_io_capacity_max = 8000
#innodb_flush_method = O_DIRECT
#innodb_log_group_home_dir = /usr/local/mysql/logs/redolog/
#innodb_undo_directory = /usr/local/mysql/logs/undolog/
#innodb_undo_logs = 128
#innodb_undo_tablespaces = 0
#innodb_flush_neighbors = 1
#innodb_log_file_size = 4G
#innodb_log_buffer_size = 16M
#innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
#innodb_print_all_deadlocks = 1
#innodb_strict_mode = 1
innodb_sort_buffer_size = 64M

########semi sync replication settings########
#plugin_dir=/usr/local/mysql/lib/plugin
#plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
#loose_rpl_semi_sync_master_enabled = 1
#loose_rpl_semi_sync_slave_enabled = 1
#loose_rpl_semi_sync_master_timeout = 5000

[mysqld-5.7]
#innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
#innodb_undo_log_truncate = 1
#innodb_max_undo_log_size = 2G
#innodb_purge_rseg_truncate_frequency = 128
#binlog_gtid_simple_recovery=1
log_timestamps=system
#transaction_write_set_extraction=MURMUR32
#show_compatibility_56=on
           

注解:

[mysqld]
user = mysql
mysql以什麼使用者運作
port = 31306   
mysql運作在哪個端口
datadir = /usr/loca/mysql/data/
mysql的資料目錄
socket=/tmp/mysql.sock
mysql以socket方式運作的sock檔案位置

symbolic-links=0
是否支援符号連結,即資料庫或表可以存儲在my.cnf中指定datadir之外的分區或目錄,為0不開啟

########basic settings########
server-id = 11
mysql的伺服器配置設定id,在啟用主從和叢集的時候必須指定,每個節點必須不同
#bind_address = 10.166.224.32
mysql監聽的ip位址,如果是127.0.0.1,表示僅本機通路
autocommit = 1
資料修改是否自動送出,為0不自動送出
character_set_server=utf8mb4
伺服器使用的字元集
skip_name_resolve = 1
禁用DNS主機名查找,啟用以後用内網位址向mysqlslap請求響應快了一半
max_connections = 800
mysql最大連接配接數

max_connect_errors = 1000
某台host連接配接錯誤次數等于max_connect_errors(預設10) ,主機'host_name'再次嘗試時被屏蔽。可有效反的防止dos攻擊
transaction_isolation = READ-COMMITTED
資料庫事務隔離級别
1.READ-UNCOMMITTED(讀取未送出内容)級别
2. READ-COMMITTED(讀取送出内容)
3. REPEATABLE-READ(可重讀)
4.SERIERLIZED(可串行化)
預設級别REPEATABLE-READ
explicit_defaults_for_timestamp = 1
mysql中TIMESTAMP類型和其他的類型有點不一樣(在沒有設定explicit_defaults_for_timestamp=1的情況下)
join_buffer_size = 128M
當我們的join是ALL,index,rang或者Index_merge的時候使用的buffer。 實際上這種join被稱為FULL JOIN

tmp_table_size = 128M
規定了内部記憶體臨時表的最大值,每個線程都要配置設定。(實際起限制作用的是tmp_table_size和max_heap_table_size的最小值。)如果記憶體臨時表超出了限制,MySQL就會自動地把它轉化為基于磁盤的MyISAM表,存儲在指定的tmpdir目錄下
tmpdir = /dev/shm/mysql-tmp/
儲存臨時檔案的目錄
max_allowed_packet = 16M
mysql最大接受的資料包大小

sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
sql_mode 模式,定義了你MySQL應該支援的sql文法,對資料的校驗等等,限制一些所謂的‘不合法’的操作
interactive_timeout = 60
伺服器關閉互動式連接配接前等待活動的秒數。互動式用戶端定義為在mysql_real_connect()中使用CLIENT_INTERACTIVE選項的用戶端
wait_timeout = 60
伺服器關閉非互動連接配接之前等待活動的秒數,線上程啟動時,根據全局wait_timeout值或全局interactive_timeout值初始化會話wait_timeout值,取決于用戶端類型(由mysql_real_connect()的連接配接選項CLIENT_INTERACTIVE定義)

read_buffer_size = 16M
讀入緩沖區的大小,将對表進行順序掃描的請求将配置設定一個讀入緩沖區,MySQL會為它配置設定一段記憶體緩沖區
read_rnd_buffer_size = 32M
随機讀緩沖區大小,當按任意順序讀取行時(列如按照排序順序)将配置設定一個随機讀取緩沖區,進行排序查詢時,MySQL會首先掃描一遍該緩沖,以避免磁盤搜尋,提高查詢速度

sort_buffer_size = 32M
是一個connection級參數,在每個connection第一次需要使用這個buffer的時候,一次性配置設定設定的記憶體

########log settings########

#log_error = /data/local/mysql-5.7.19/log/mysql-error.log
錯誤日志位置

slow_query_log = 1
是否開啟慢查詢日志收集
slow_query_log_file = /data/local/mysql-5.7.19/log/mysql-slow.log
慢查詢日志位置
log_queries_not_using_indexes = 1
是否記錄未使用索引的語句

log_slow_admin_statements = 1
慢查詢也記錄那些慢的optimize table,analyze table和alter table語句

log_slow_slave_statements = 1
記錄由Slave所産生的慢查詢

log_throttle_queries_not_using_indexes = 10
設定每分鐘記錄到日志的未使用索引的語句數目,超過這個數目後隻記錄語句數量和花費的總時間

expire_logs_days = 90
日志自動過期清理天數

long_query_time = 1
設定記錄慢查詢逾時時間

min_examined_row_limit = 100
查詢檢查傳回少于該參數指定行的SQL不被記錄到慢查詢日志

########replication settings########

#master_info_repository = TABLE
從機儲存主節點資訊方式,設成file時 會生成master.info 和 relay-log.info2個檔案,設成table,資訊就會存在mysql.master_slave_info表中。不管是設定的哪種值,都不要移動或者編輯相關的檔案和表

#relay_log_info_repository = TABLE
用于儲存slave讀取relay log的位置資訊,可選值為“FILE”、“TABLE”,以便crash重新開機後繼續恢複

log_bin = /data/local/mysql-5.7.19/log/mysql-bin
binlog的儲存位置,不能指定确定的檔案名如mysql-bin.log,隻能指定位置和字首,會生成以字首為開頭的一系列檔案

#sync_binlog = 4
這個參數是對于MySQL系統來說是至關重要的,他不僅影響到Binlog對MySQL所帶來的性能損耗,而且還影響到MySQL中資料的完整性。對于“sync_binlog”參數的各種設定的說明如下:
sync_binlog=0,當事務送出之後,MySQL不做fsync之類的磁盤同步指令重新整理binlog_cache中的資訊到磁盤,而讓Filesystem自行決定什麼時候來做同步,或者cache滿了之後才同步到磁盤。
sync_binlog=n,當每進行n次事務送出之後,MySQL将進行一次fsync之類的磁盤同步指令來将binlog_cache中的資料強制寫入磁盤。
在MySQL中系統預設的設定是sync_binlog=0,也就是不做任何強制性的磁盤重新整理指令,這時候的性能是最好的,但是風險也是最大的。因為一旦系統Crash,在binlog_cache中的所有binlog資訊都會被丢失。而當設定為“1”的時候,是最安全但是性能損耗最大的設定。因為當設定為1的時候,即使系統Crash,也最多丢失binlog_cache中未完成的一個事務,對實際資料沒有任何實質性影響。從以往經驗和相關測試來看,對于高并發事務的系統來說,“sync_binlog”設定為0和設定為1的系統寫入性能差距可能高達5倍甚至更多。
gtid_mode = on
啟用gtid類型,否則就是普通的複制架構

enforce_gtid_consistency = 1
強制GTID的一緻性

#log_slave_updates
slave更新是否記入日志,在做雙主架構時異常重要,影響到雙主架構是否能互相同步
binlog_format = row
binlog日志格式,可選值“MIXED”、“ROW”、“STATEMENT”,在5.6版本之前預設為“STATEMENT”,5.6之後預設為“MIXED”;因為“STATEMENT”方式在處理一些“不确定”性的方法時會造成資料不一緻問題,我們建議使用“MIXED”或者“ROW”

#relay_log = /data/local/mysql-5.7.19/log/mysql-relay.log
從機儲存同步中繼日志的位置

#relay_log_recovery = 1
當slave從庫當機後,假如relay-log損壞了,導緻一部分中繼日志沒有處理,則自動放棄所有未執行的relay-log,并且重新從master上擷取日志,這樣就保證了relay-log的完整性

#binlog_gtid_simple_recovery = 1
這個參數控制了當mysql啟動或重新開機時,mysql在搜尋GTIDs時是如何疊代使用binlog檔案的。 這個選項設定為真,會提升mysql執行恢複的性能。因為這樣mysql-server啟動和binlog日志清理更快

#slave_skip_errors = ddl_exist_errors
跳過指定error no類型的錯誤,設成all 跳過所有錯誤

########innodb settings########

innodb_page_size = 16K
innodb每個資料頁大小,這個參數在一開始初始化時就要加入my.cnf裡,如果已經建立了表,再修改,啟動MySQL會報錯

innodb_buffer_pool_size = 4G
緩存innodb表的索引,資料,插入資料時的緩沖,專用mysql伺服器設定的大小: 作業系統記憶體的70%-80%最佳

#innodb_buffer_pool_instances = 8
可以開啟多個記憶體緩沖池,把需要緩沖的資料hash到不同的緩沖池中,這樣可以并行的記憶體讀寫

#innodb_buffer_pool_load_at_startup = 1
預設為關閉OFF。如果開啟該參數,啟動MySQL服務時,MySQL将本地熱資料加載到InnoDB緩沖池中

#innodb_buffer_pool_dump_at_shutdown = 1
預設為關閉OFF。如果開啟該參數,停止MySQL服務時,InnoDB将InnoDB緩沖池中的熱資料儲存到本地硬碟

#innodb_lru_scan_depth = 2000
根據 官方文檔 描述,它會影響page cleaner線程每次刷髒頁的數量, 這是一個每1秒 loop一次的線程

innodb_lock_wait_timeout = 5
事務等待擷取資源等待的最長時間,超過這個時間還未配置設定到資源則會傳回應用失敗;參數的時間機關是秒

#innodb_io_capacity = 4000
#innodb_io_capacity_max = 8000
這兩個設定會影響InnoDB每秒在背景執行多少操作. 大多數寫IO(除了寫InnoDB日志)是背景操作的. 如果你深度了解硬體性能(如每秒可以執行多少次IO操作),則使用這些功能是很可取的,而不是讓它閑着

#innodb_flush_method = O_DIRECT
預設值為 fdatasync. 如果使用 硬體RAID磁盤控制器, 可能需要設定為 O_DIRECT. 這在讀取InnoDB緩沖池時可防止“雙緩沖(double buffering)”效應,否則會在檔案系統緩存與InnoDB緩存間形成2個副本(copy). 如果不使用硬體RAID控制器,或者使用SAN存儲時, O_DIRECT 可能會導緻性能下降

#innodb_log_group_home_dir = /data/local/mysql-5.7.19/log/redolog/
innodb重做日志儲存目錄

#innodb_undo_directory = /data/local/mysql-5.7.19/log/undolog/
innodb復原日志儲存目錄

#innodb_undo_logs = 128
undo復原段的數量, 至少大于等于35,預設128

#innodb_undo_tablespaces = 0
用于設定建立的undo表空間的個數,在mysql_install_db時初始化後,就再也不能被改動了;預設值為0,表示不獨立設定undo的tablespace,預設記錄到ibdata中;否則,則在undo目錄下建立這麼多個undo檔案,例如假定設定該值為4,那麼就會建立命名為undo001~undo004的undo tablespace檔案,每個檔案的預設大小為10M。修改該值會導緻Innodb無法完成初始化,資料庫無法啟動,但是另兩個參數可以修改

#innodb_flush_neighbors = 1
InnoDB存儲引擎在重新整理一個髒頁時,會檢測該頁所在區(extent)的所有頁,如果是髒頁,那麼一起重新整理。這樣做的好處是通過AIO可以将多個IO寫操作合并為一個IO操作。對于傳統機械硬碟建議使用,而對于固态硬碟可以關閉。

#innodb_log_file_size = 4G
這個值定義了日志檔案的大小,innodb日志檔案的作用是用來儲存redo日志。一個事務對于資料或索引的修改往往對應到表空間中的随機的位置,是以當重新整理這些修改到磁盤中就會引起随機的I/O,而随機的I/O往往比順序的I/O更加昂貴的開銷,因為随機的I/O需要更多的開銷來定位到指定的位置。innodb使用日志來将随機的I/O轉為順序的I/O,隻要日志檔案是安全的,那麼事務就是永久的,盡管這些改變還沒有寫到資料檔案中,如果出現了當機或伺服器斷電的情況,那麼innodb也可以通過日志檔案來恢複以及送出的事務。但是日志檔案是有一定的大小的,是以必須要把日志檔案記錄的改變寫到資料檔案中,innodb對于日志檔案的操作是循環的,即當日志檔案寫滿後,會将指針重新移動到檔案開始的地方重新寫,但是它不會覆寫那些還沒有寫到資料檔案中的日志,因為這是唯一記錄了事務持久化的記錄
如果對 Innodb 資料表有大量的寫入操作,那麼選擇合适的 innodb_log_file_size 值對提升MySQL性能很重要。然而設定太大了,就會增加恢複的時間,是以在MySQL崩潰或者突然斷電等情況會令MySQL伺服器花很長時間來恢複

#innodb_log_buffer_size = 16M
事務在記憶體中的緩沖。 配置設定原 則:控制在2-8M.這個值不用太多的。他裡面的記憶體一般一秒鐘寫到磁盤一次

#innodb_purge_threads = 4
控制是否使用,使用幾個獨立purge線程(清除二進制日志)

innodb_large_prefix = 1
mysql在5.6之前一直都是單列索引限制767,起因是256×3-1。這個3是字元最大占用空間(utf8)。但是在5.6以後,開始支援4個位元組的uutf8。255×4>767, 于是增加了這個參數。這個參數預設值是OFF。當改為ON時,允許列索引最大達到3072
innodb_thread_concurrency = 64
InnoDB kernel并發最大的線程數。 1) 最少設定為(num_disks+num_cpus)*2。 2) 可以通過設定成1000來禁止這個限制

#innodb_print_all_deadlocks = 1
是否将死鎖相關資訊儲存到MySQL 錯誤日志中

#innodb_strict_mode = 1
開啟InnoDB嚴格檢查模式,尤其采用了頁資料壓縮功能後,最好是開啟該功能。開啟此功能後,當建立表(CREATE TABLE)、更改表(ALTER TABLE)和建立索引(CREATE INDEX)語句時,如果寫法有錯誤,不會有警告資訊,而是直接抛出錯誤,這樣就可直接将問題扼殺在搖籃裡

innodb_sort_buffer_size = 64M
ORDER BY 或者GROUP BY 操作的buffer緩存大小

########semi sync replication settings########
#plugin_dir=/data/local/mysql-5.7.19/lib/plugin
指定mysql的插件目錄

#plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
指定載入哪些插件

#loose_rpl_semi_sync_master_enabled = 1
控制主庫上是否開啟semisync

#loose_rpl_semi_sync_slave_enabled = 1
控制備庫是否開啟semisync

#loose_rpl_semi_sync_master_timeout = 5000
機關毫秒,防止半同步複制在沒有收到确認的情況下,發送堵塞。master在逾時之前沒有收到确認,将恢複到異步複制,繼續執行半同步沒有進行的操作

[mysqld-5.7]

#innodb_buffer_pool_dump_pct = 40
表示轉儲每個bp instance LRU上最熱的page的百分比。通過設定該參數可以減少轉儲的page數

innodb_page_cleaners = 4
為了提升擴充性和刷髒效率,在5.7.4版本裡引入了多個page cleaner線程。進而達到并行刷髒的效果
在該版本中,Page cleaner并未和buffer pool綁定,其模型為一個協調線程 + 多個工作線程,協調線程本身也是工作線程。是以如果innodb_page_cleaners設定為8,那麼就是一個協調線程,加7個工作線程

#innodb_undo_log_truncate = 1
是否開啟線上回收(收縮)undo log日志檔案,支援動态設定

#innodb_max_undo_log_size = 2G
當超過這個閥值(預設是1G),會觸發truncate回收(收縮)動作,truncate後空間縮小到10M

#innodb_purge_rseg_truncate_frequency = 128
控制回收(收縮)undo log的頻率。undo log空間在它的復原段沒有得到釋放之前不會收縮, 想要增加釋放復原區間的頻率,就得降低設定值

#binlog_gtid_simple_recovery=1
這個參數控制了當mysql啟動或重新開機時,mysql在搜尋GTIDs時是如何疊代使用binlog檔案的。 這個選項設定為真,會提升mysql執行恢複的性能。因為這樣mysql-server啟動和binlog日志清理更快。該參數為真時,mysql-server隻需打開最老的和最新的這2個binlog檔案

log_timestamps=system
在MySQL 5.7.2 新增了 log_timestamps 這個參數,該參數主要是控制 error log、genera log,等等記錄日志的顯示時間參數。 在 5.7.2 之後改參數為預設 UTC 這樣會導緻日志中記錄的時間比中國這邊的慢,導緻檢視日志不友善。修改為 SYSTEM 就能解決問題

#transaction_write_set_extraction=MURMUR32
這個神奇的參數5.7.6版本引入,用于定義一個記錄事務的算法,這個算法使用hash辨別來記錄事務。如果使用MGR,那麼這個hash值需要用于分布式沖突檢測何處理,在64位的系統,官網建議設定該參數使用 XXHASH64 算法。如果線上并沒有使用該功能,應該設為off

#show_compatibility_56=on
從mysql5.7.6開始information_schema.global_status已經開始被舍棄,為了相容性,此時需要打開 show_compatibility_56
           

Sql語句練習:

資料庫相關

1、連接配接資料庫的指令

mysql -uroot -p 
           

2、建立資料庫

3、查詢所有的資料庫

4、查詢單個資料庫的資訊

5、删除資料庫

6、建立資料庫時指定字元集

7、使用資料庫

表相關的SQL

建立表student
create table student (id int, name varchar(20));
檢視所有的表
show tables;
檢視表屬性 資料庫表的引擎 和 編碼
show create table student;
檢視表結構
desc student;
建立表 指定引擎和編碼
create table teacher (id int, name varchar(10)) engine=innodb charset=utf8;
修改表的名字
rename table student to stu;
給表添加字段
-在最後
alter table stu add age int;
-在最前端添加
alter table stu add age int first;
-在某個字段的後面
alter table stu add age int after id;
删除表字段
alter table stu drop age;
修改表的屬性
alter table stu engine=myisam charset=utf8;
修改字段的名稱和類型
alter table stu change age fatherAge int;
修改字段的類型和位置
alter table stu modify fatherAge double after name;
删除表
drop table stu;
           

資料相關

-建立商品表:
create table t_item(
        id int,
        title varchar(40),
        num int,
        price double,
        category varchar(20),
        createDate date
);
           

1、插入資料 -全表插入 insert into t_item values(1,‘毛巾’,89,4.5,‘日用品’,‘1985-06-23’); -指定字段插入

insert into t_item (title,price,category)values
('香皂',1.5,'日用品');
-批量插入資料

insert into t_item values
(3,'滑鼠',200,20,'電腦配件','2008-12-21'),
(4,'鍵盤',260,35,'電腦配件','2018-11-25'),
(3,'寫字闆',10,120,'電腦配件','2006-10-28');
           

2、修改資料

update t_item set title='雙飛燕滑鼠' where title='滑鼠';

-修改多條資料
update t_item set title='滑鼠',price=38 where title='雙飛燕滑鼠';
           

3、删除資料

delete from t_item where id is null;
delete from t_item where title='鍵盤';
           

查詢資料

-查詢sql 後面也可以添加where 條件
select title from t_item where category='日用品';
           

練習:

1.建立newdb資料庫建立表emp(員工表)字段有:id name、salary(工資)、dept(部門名稱)、joinDate(入職日期)

2. 插入劉歇業和唐僧四人組 7個人 劉歇業部門為:三國部 唐僧它們部門為取經部

3.修改劉備的工資為2000

4.修改唐僧名稱為唐長老

5.給表添加一個年齡字段 在name字段的後面

6.修改三國部的年齡為45

7.修改取經部的日期為今天日期

8.修改工資小于5000的年齡為18

9. 删除三國部門所有員工

10.删除全表

delete from emp;
drop table emp;