1. 程式人生 > >數據庫入門(一)

數據庫入門(一)

數據庫入門 數據庫軟件 java平臺

1.數據保存

數據保存在內存:

優點: 存取速度快

缺點: 數據不能永遠保存

數據保存在文件:

優點: 數據永遠保存

缺點:

1)速度比內存操作慢,頻繁的IO操作

2)查詢數據不方便

數據保存在軟件:

1)數據永遠保存

2)速度比較快

3)查詢和管理數據方便

2.常見數據庫軟件

SQLServer 微軟的產品。與net平臺兼容比較好。(收費

Oracle:甲骨文公司的產品。 java平臺兼容性最好。(收費

收購Sun公司: java

收購mysql: mysql 數據庫軟件

中大型企業(中大型應用)

mysql 開源產品。免費的。與java平臺兼容性最好。

中小企業(中小應用)

3.數據庫的操作

創建庫,day16

CREATE DATABASE day16 DEFAULT CHARACTER SET utf8;

使用day16這個數據庫

USE day16;

查詢day16這個庫中的所有的表

SHOW TABLES;

創建學生表(id,name,age)

CREATE TABLE student(

id INT,

NAME VARCHAR(20),

age INT

);

查詢表中的數據

SELECT * FROM student;

查詢一個表結構

DESC student;

刪除student表

DROP TABLE student;

添加一個地址字段(gender varchar(2))

ALTER TABLE student ADD COLUMN gender VARCHAR(2);


修改gender字段類型為varchar(3)

ALTER TABLE student MODIFY COLUMN gender VARCHAR(3);


將gender字段修改為sex字段 varchar(2)

ALTER TABLE student CHANGE COLUMN gender sex VARCHAR(2);


添加一個地址字段

ALTER TABLE student ADD COLUMN address VARCHAR(20);


刪除sex和address字段

ALTER TABLE student DROP COLUMN sex,DROP COLUMN address;


將student這個表的表名改為stu

ALTER TABLE stu RENAME TO student;

查看表數據

SELECT * FROM student;


給表中插入3條數據(插入所有字段)

INSERT INTO student VALUES(1,‘張三‘,20,‘山西‘);

INSERT INTO student VALUES(2,‘李四‘,22,‘山西‘);

INSERT INTO student VALUES(3,‘王五‘,21,‘河北‘);

給表中插入id字段和name字段

INSERT INTO student(id,NAME) VALUES(4,‘趙六‘);


將所有學生的年齡改為30歲,修改所有學生的年齡

UPDATE student SET age=30;


將id為3的學生姓名改為房祖名

UPDATE student SET NAME=‘張飛‘ WHERE id=3;


刪除全表數據,本質上是一條一條進行刪除的,效率比較慢

DELETE FROM student;


刪除id為3的數據

DELETE FROM student WHERE id=3;


使用truncate table 表名,刪除全表數據,直接將全表數據刪除,效率比較快

TRUNCATE TABLE student;


查詢所有列

SELECT * FROM student;


查詢指定字段,查詢id,name

SELECT id,NAME FROM student;


查詢時指定別名,name--姓名,address--住址

SELECT NAME AS ‘姓名‘,address AS ‘住址‘ FROM student;

添加servlet,jsp字段

ALTER TABLE student ADD COLUMN servlet INT,ADD COLUMN jsp INT;


給每條學生數據添加上servlet和jsp的成績

UPDATE student SET servlet=50,jsp=60 WHERE id=1;

UPDATE student SET servlet=60,jsp=70 WHERE id=2;

UPDATE student SET servlet=70,jsp=80 WHERE id=3;


合並servlet和jsp這兩個列進行查詢,查詢每個學生的servlet和jsp的成績總和

SELECT NAME ‘姓名‘,(servlet+jsp) ‘總成績‘ FROM student;


查詢你們班的學生都來自於哪裏

SELECT NAME ‘姓名‘,address ‘地址‘ FROM student;


去除重復值的另一種寫法

SELECT DISTINCT(address) FROM student;



查詢id為1並且,並且servlet成績等於50的學生(交集 and)

SELECT * FROM student WHERE id=1 AND servlet=50;


查詢id為1或者來自中國香港的學生(並集 or)

SELECT * FROM student WHERE id=1 OR address=‘中國香港‘;


查詢servlet成績大於60分的學生

SELECT * FROM student WHERE servlet>60;


查詢jsp成績小於等於70的學生

SELECT * FROM student WHERE jsp<=70;

另一種寫法

SELECT * FROM student WHERE jsp<70 OR jsp=70;


上面寫法的另一種語法,between...and...包前也包後

SELECT * FROM student WHERE jsp BETWEEN 70 AND 80;


查詢學生年齡不等於30歲的學生

SELECT * FROM student WHERE age<>30;


模糊查詢(like),like後面跟的是符號

%任意多個字符

_一個字符


查詢姓劉的學生(like ‘劉%‘)

SELECT * FROM student WHERE NAME LIKE ‘劉%‘;



聚合函數

查詢servlet的總成績(sum -- 求和函數)

SELECT SUM(servlet) FROM student;


查詢每個學生的servlet平均分(avg,平均函數)

SELECT AVG(servlet) FROM student;


查詢學生的servlet的最高成績(max ,最大值函數)

SELECT MAX(servlet) FROM student;



求取這張學生表中有多少條數據(count(*))

效率比較低

SELECT COUNT(*) FROM student;


根據某一個字段求取學生表中的數據條數,當一個字段數值為null的時候,是不予計算的

但是這種方式求取得統計值的時候效率會更高,但是有時候數據不夠準確

SELECT COUNT(age) FROM student



查詢人數大於1的地域(group by 分組字段 having 篩選條件)

SELECT address,COUNT(*) FROM student GROUP BY address HAVING COUNT(*)>1;


student表中目前有4條數據,分為2頁顯示,每頁顯示2條

查詢第一頁的顯示數據:

SELECT * FROM student LIMIT 0,2;

查詢第二頁現實的數據

SELECT * FROM student LIMIT 2,2;


按照id字段的升序進行排序

asc,升序,數字從小到大,字母a-z

desc,降序,數字從大到小,字母z-a

SELECT * FROM student ORDER BY id DESC;


按照servlet的成績的降序進行排序

SELECT * FROM student ORDER BY servlet DESC;


先按照學生的年齡升序進行排序,年齡相同按照學生的servelt成績的升序進行排序

SELECT * FROM student ORDER BY age ASC,servlet ASC;


數據庫入門(一)