数据库(2)
約束(Constraint)
對插入數據庫的數據進行合法性校驗,保障數據的完整性
5中類型的約束:
1.非空 (NOT NULL):字段值不能為NULL
2.唯一(UNIQUE): 字段值不能重復,雖然唯一 但可以為NULL
3.主鍵(PRIMARY KEY):非空并且唯一
外鍵(FOREIGN KEY):字段的值只能為另外一張表中的某個字段的值
檢查約束(CHECK):限制字段的取值范圍
?
多表聯合查詢
笛卡爾集:
查詢結果集
表名太長可以使用別名簡化寫法
where子句用于設置查詢條件
order by子句用于排序
多級排序
TOP N問題:MySQL數據庫中可以使用limit關鍵字實現(注意:這個語法不是SQL標準指定的)
?
?
擴展
?
兩張表查詢
select * from student,course,
select * from student st,score where st.sno = score.sno;
select st.sno, name, sex, phone ,cno from student st,score where st.sno = score.sno;
三張表查詢
select * from student st, course c, score sc where st.name="張三" and c.name="python程序設計" and score<60 and st.sno=sc.cno and order by score desc
?
order by排序 加desc降序
?
MySQL還是會把我們的數據放到文件中,當我們給他一個數據
在djdb下創建一個名為student的表
create table djdb.student(
sno int(8) unsigned primary key,
name varchar(20) no null,
sex char(1) no null default "男",
sight float(2, 1),
phone char(11) not null);
?
顯示最近的警告信息
show warnings;
?
MariaDB是MySQL的衍生產品,兩個東西是一模一樣的,是MySQL的創始人做出來的,
?
?
物理內存超過4G就要裝64位系統
不然超過4G的內存空間就會白白的浪費
32位系統最大訪問的內存空間就是4G,所擁有的編號為2的32次方減1,用完就不能再編號,64位系統就是2的64次方減1,為何要用64位,因為硬件的發展,配置的提高,32位系統的編號已經快滿足不了硬件的需求,所以硬件商就要操作系統商往64位發展,以滿足它們的需求。。
硬件電路設計層面為軟件加速會讓用戶體驗得到非常大的提高
硬件軟件是相互攜程向前發展的
操作系統是軟硬件的主宰
?
list和tuple里面存放的都是地址,只不過tuple里的地址不能動,list里的可以動
深拷貝本質就是遞歸進行淺拷貝 ,深拷貝淺拷貝對于不可變對象沒有影響
淺拷貝只拷貝第一層,深拷貝會拷貝多層
d = c[:] # 切片操作實現的拷貝也是淺拷貝
d = copy.copy(c) # 淺拷貝
d = copy.deepcopy(c) # 深拷貝
?
python解析器垃圾回收機制 gc機制,對于無用對象,垃圾回收機制會清理掉它,將其釋放,供其他數據使用
開機按f8進安全模式,開機只會運行系統所必須的程序
?
所謂的效率往往從兩個方面去考慮:時間和空間
?
?
完整的創建如下(以三張表為例,插入處可插入多條數據):
create table student(
sno int(6) unsigned primary key,
name varchar(20) not null,
sex char not null,
birth data not null,
sight float(2, 1),
phone char(11) unique,
check (sight > 2 and sight < 6));
?
insert into student values(1001, "張三", "男",“1957-4-23”,“132134234”);
?
create table score(
sno int(6) unsigned,
cno int(6) not null,
score tinyint unsigned not null
foreign key(sno) references student(sno)
)
?
insert into score values(1001, 2001, 98)
#課程信息
create table course(
cno int(6) unsigned,
name varchar(50) not null,
teacher varchar(20) not null,
primary key(cno)
)
?
insert into course values(2001, 'Python程序設計', ’azhe‘)
insert into course values(2002, 'JAVA程序設計', ’老王‘)
insert into course values(2003, 'C++程序設計', ’李四‘)
?
?
1.查詢出所有有掛科的學生的信息
select * from student st, score where st.sno=score.sno and score < 60 and st.sno= sc.sno;
2.查詢出出班上所有女生Python程序設計這門課的前兩名
select * from student st,course c,score sc where st.sex="女" and c.name="Python程序設計" limit 2;
?
3.查詢出班上所有使用聯通手機號并且Python程序設計排名前三的學生信息
select distinct * from student st, course c, score sc where st.phone regexp"^131[0-9]{8}" and c.name="Python程序設計" limit 3;
4.查詢出班上平均分最高的學生信息
select avg(score) from score,student st group by name
select * from student, score where score=(select max( from score);
?
?
轉載于:https://www.cnblogs.com/yanruizhe/p/11379653.html
總結