MySql學習記錄1-mysql的基本操作之增刪改

SQL-Structured Query Language結構化查詢語言。

MySql的安裝-解壓版:

1、解壓。
2、設置MySql的數據庫目錄,修改配置文件my.ini

[mysqld] 
basedir=E:\\myserver\\mysql-5.0.37-win32        (必須)
datadir=E:\\myserver\\mysql-5.0.37-win32\\data    (必須)
default-character-set=gbk  -(可選,建議不設置)
2、啓動測試
命令行:/> mysqld –console
3、登錄MySql
命令行:/> mysql -u root –p    (注意-u應該與root緊挨着)
4、增加用戶可以選程訪問,mysql.user表:
create user root identified by ‘1234’;   --創建用戶
Grant all on *.* to ‘root’@’%’ with grant option; 授權
5、重新啓動服務器,測試是否可以遠程登錄
6、安裝mysql服務
命令行:/> mysqld –install
7、卸載服務
命令行:/> mysqld -remove

基本操作:

mysql –uroot –p1234 //登錄
mysql>show databases; //顯示所有已經存在的數據庫
mysql>use test; //使用某個數據庫
mysql>show tables; //顯示當前數據庫中的所有表
mysql>help; //顯示
mysql>desc tableName; //顯示錶結構
導出數據庫中的所有表:在命令行模式下:
shell/> mysqldump –uroot –p1234 –-databases dbName > d:\a\a.sql
導入:導入時,必須要先手工建立一個新的數據庫:
mysql>use dbName;
Mysql>source d:\a\a.sql
或:
shell/>mysql –uroot –p1234 –D dbname < d:\a\a.sql (注意參數-D是大寫)

MySql的數據類型:

查詢Mysql的開發手冊,查詢data type可見所有的數據類型。
比較經常使用的數據類型爲:
int、varchar、char、numeric(double,float)、text

Char與varchar的區別:
Char是定長數據,如果char(10)但裏面只保存了1個字符,則它的長度仍然是10.-但Mysql對查詢的結果進行了處理 ,所以使用legth無法判斷它所佔用的長度。
Varchar(10)時,如果裏面只保存了1個字符,則它的長度爲1,所以,varchar被稱了可變長字符。
Char的取值範圍爲0-255
varchar的取值範圍爲0-65535.如果是UTF-8數據類型則可以保存0-21844字符。

Int和numeric:
Int類型不能保存小數位。
Numeric可以保存小數位。如numeric(4,2)則可以表示最大數據爲:99.99。注意4是總位數,2是小數位數。

創建和修改表:

創建表:
Create table stud(
id int,
name varhcar(30)
);
創建時同時指定不能爲空:
Create table tb(
     name varchar(20) not null
)

修改表:
Alter table stud
      add column sex char(1);  /*添加一個新的字段 */


Alter table stud
      drop column sex;  /* 刪除sex字段*/

數據CURD:

字符類型的數據前後要添加’’單引號。
插入數據
沒有指定列時,要給出完整數據,且要對應順序:
Insert into stud values(1,’Tom’,’1’);
優化寫入,指定列:
Insert into stud(id,name) values(1,’jack’);

查詢數據:
Select * from stud; -- 通過*將所有列顯示出來
查詢指定的列:
Select id ,name from stud
另名:as
Select id as 編號,name as 姓名 from stud; //不建議使用中文
或是省去as關鍵字:
Select id 編號,name 姓名 from stud;
給表也取個別名:
Select s.id,s.name from stud as s;

修改數據:
Update stud set name=‘Jack’;
同時修改兩個值:
Update stud set name=‘Rose’,id=22 where id=1;
在原值上面進行累加操作:
Update product set price=price*1.1  -所有商品的價格上漲10%
刪除數據:
Delete from stud /*全部刪除*/
Delete from stud where id=1; /*刪除指定的行 */
也可以使用
TRUNCATE TABLE stud; //它與delete的區別是不記錄操作日誌,即無法恢復數據。

Where子句:

Select 字段 From 表名 where 條件 and  條件 or 條件 
Update table tableName set .. Where 條件
Delete from tableName where ….

條件查詢:

where關鍵字。(Name=‘dd’ and age=33) or addr=‘BJ’
between X and Y關鍵字。 在什麼之間
in關鍵字和not in.  In(‘….’,’aafad’,’afasdf’);
and和or關鍵字。
使用like實現模糊查詢。%
通過is null判斷是否爲null。(要區分空字符串與null的區別)

演示:

1.創建數據庫:

CREATE DATABASE IF NOT EXISTS abc CHARACTER SET utf8;
2.創建表

CREATE TABLE student(
	sno VARCHAR(15) NOT NULL PRIMARY KEY,
	sname VARCHAR(15) NOT NULL,
	age INT,
	address VARCHAR(30)
);

CREATE TABLE teacher(
	tno AUTO_INCREMENT NOT NULL PRIMARY KEY,
	tname VARCHAR(15) NOT NULL,
	tsale NUMERIC(DOUBLE)
);

CREATE TABLE stud(
	sno VARCHAR(15) NOT NULL PRIMARY KEY,
	sname VARCHAR(15) NOT NULL,
	age INT,
	address VARCHAR(30)
);

3.修改表格:

ALTER TABLE stud DROP COLUMN sno;
ALTER TABLE stud ADD COLUMN sno INT PRIMARY KEY AUTO_INCREMENT;

4.插入數據

INSERT INTO stud VALUES('dragon1',21,'湖南邵陽1',1);
INSERT INTO stud(sname,age,address) VALUES('dragon2',21,'湖南邵陽2');

5.刪除數據

DELETE FROM stud WHERE sno>=5;
DELETE FROM stud WHERE sno>=5 && sno<=8;
6.更新數據

UPDATE stud SET sname="龍" WHERE sno=4;
7.查詢數據

SELECT * FROM student;
SELECT * FROM student WHERE sno>1002;
//使用as爲字段取一個別名,as也可以省略
SELECT sno AS 學號,sname 姓名,age 年齡,address 地址 FROM student;

//複雜查詢
SELECT * FROM student WHERE age>24;
SELECT * FROM student WHERE age>24 AND age<40;
SELECT * FROM student WHERE age BETWEEN 24 AND 40;[24,40]
SELECT * FROM student WHERE age<=24 OR age>40;
//選取age=21,23,25的student
SELECT * FROM student WHERE age=21 OR age=23 OR age=25;
SELECT * FROM student WHERE age IN(21,23,25);

//選取age!=21,23,25的student
SELECT * FROM student WHERE age NOT IN(21,23,25);

//選擇地址爲湖南開頭的student,讓他的age+1
SELECT * FROM student WHERE address LIKE'湖南%';
UPDATE student SET age=age+1 WHERE address LIKE'湖南%';

SELECT * FROM student WHERE sname LIKE 'd%' AND age<25;
//_表示前面一個字符的個數+1
SELECT * FROM student WHERE sname LIKE 'd_';
//名字中帶a的
SELECT * FROM student WHERE sname LIKE '%a%';

//模糊查詢LIKE  '%'通配所有字符   '_'通配單字符

SELECT * FROM stud WHERE sname LIKE '張%'; //姓張的學生
SELECT * FROM stud WHERE sname LIKE '張_'; //姓張,名爲單字的學生
SELECT * FROM stud WHERE sname LIKE '張__'; //姓張,名爲雙字的學生
SELECT * FROM stud WHERE sname LIKE '%張%'; //姓名中含“張”字的學生
SELECT * FROM stud WHERE sname LIKE '%張%' AND age<24;
//要查詢爲null的要使用關鍵字 IS NULL
SELECT * FROM student WHERE age IS NULL;
//查詢字段爲空字符串的記錄
SELECT * FROM student WHERE sname='';

如果顯示內容時要讓表頭變成中文,用別名(AS可以省略)

SELECT * FROM stud;
SELECT sno,sname,age,saddress  FROM stud;
SELECT sno AS 編號,sname AS 姓名,age,saddress  FROM stud;
SELECT sno 編號,sname 姓名,age 年齡,saddress 地址 FROM stud; //省略AS

句型:
select 字段名 from 表名  where 條件1 and 條件2  or 條件3
update 表名  set 字段名1=值 [,字段名2=值] where 子句[in 子句] [between子句]
delete from 表名  where 子句











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章